保护 Access 数据库中的 Visual Basic for Application

来源:互联网 时间:2016-01-03

本主题中的信息仅适用于 Microsoft Access 数据库 (.mdb)。

可以通过使用密码或是将数据库保存为 MDE 文件来帮助保护 Microsoft Visual Basic for Applications (VBA) 代码。密码只有助于保护代码,而将数据库保存为 MDE 文件可保护窗体、报表和 Visual Basic 代码。用户级安全机制不保护代码,但有助于保护引用代码的窗体和报表。

使用密码保护 Visual Basic for Applications (VBA) 代码

在 Microsoft Access 项目 (.adp) 文件和 Microsoft Access 数据库 (.mdb) 文件中,可通过使用密码(您和其他用户必须输入该密码才能查看或编辑“Visual Basic 编辑器”中的 VBA 代码)保护 VBA 代码,从而帮助保护所有标准模块和类模块(如窗体和报表后面的模块)。只要设置了密码,则每次会话都需输入一次密码。不仅查看和编辑需要密码,剪切、复制、粘贴、导出和删除任何模块也需要密码。但请注意,以这种方式对 VBA 代码采取安全措施并不能阻止您或其他用户运行已有的 VBA 代码。

将数据库保存为 MDE 文件

将Microsoft Access 数据库保存为 MDE 文件时,将会编译所有模块,删除所有可编辑的源代码,并压缩目标数据库。Visual Basic 代码将继续运行,但不能对其查看或编辑。Access 数据库将继续正常运行,即仍可以更新数据和运行报表,但数据库的大小将由于代码的删除而减小。内存的使用得到优化,而性能也得以提高。

将 Access 数据库保存为 MDE 文件可防止以下操作:

在“设计”视图中查看、修改或创建窗体、报表或模块。

添加、删除或更改对对象库或数据库的引用。

利用 Microsoft Access 或 VBA 对象模型的属性或方法更改代码,因为 MDE 文件不包含源代码。

导入或导出窗体、报表或模块。但是,表、查询、数据访问页和宏可以在非 MDE 数据库中进行导入或导出。

模块和用户级安全机制

在 Microsoft Access 2000 或更高版本的数据库中,标准模块和类模块(如窗体和报表后面的代码)不再部署用户级安全机制(而以前的版本中它们采用用户级安全机制)。但是,窗体和报表仍利用用户级安全机制。这意味着模块、窗体和报表采用不同的安全机制。

例如,假设有适当的权限,可以向窗体中添加控件,但是如果 VBA 工程的查看权限被锁定并且该工程已被密码保护,而您不知道密码,您就无法查看或编辑窗体后面的模块。相反,通过用户级安全机制,不赋予您对对象的“修改设计”权限,即可限制您对窗体或报表的设计,但是,如果您知道 VBA 工程的密码,则仍可访问窗体和报表后面的模块。

对此也有例外。即使对窗体或报表拥有了“修改设计”的权限,也不能删除窗体或报表,而且不能将“内含模块”属性值设置为“否”,因为该操作会删除窗体和报表后面的模块。

相关阅读:
Top