保护 Access 数据库

Securing Access database

我正在尝试使用比隐藏导航面板和隐藏后端文件更可靠的方法来保护数据库。有没有办法完全用密码保护所有对象不被修改或访问?当他们试图通过表单修改 table 数据时,这会造成麻烦吗?如果是这样,我猜可以使用 VBA.

暂时解锁 tables

好的,所以我必须做 4 件事:

  1. 加密后端。这使得他们需要密码才能打开后端文件。但是他们仍然可以从前端访问 tables 和其他东西!接下来的步骤是防止这种情况发生。
  2. 在前端,从选项中取消选中:显示导航窗格、允许完整菜单和允许默认快捷菜单。这使得 none 的开发内容在最初打开时显示。但是,如果他们转到您取消选中它们的地方,他们可以自己重新选中这些选项。要删除他们对“文件”菜单中的选项的访问权限...
  3. 创建一个名为 USysRibbons 的 table。它应该有两个属性:RibbonName (key) 和 RibbonXML。在 RibbonName 中输入任何你想要的名称,但在 RibbonXML 中,输入:

    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"> <ribbon startFromScratch="true"> <qat> <sharedControls> <control idMso="ImportExcel" label="Import from Excel" enabled="true"/> </sharedControls> </qat> </ribbon> <backstage> <button idMso="ApplicationOptionsDialog" visible="false"/> </backstage> </customUI>

设置 <ribbon startFromScratch="true"> 很重要,因为它会阻止用户右键单击功能区或快速访问工具栏、selection 自定义功能区以及从那里访问菜单。 <qat> 标签中的内容只是在快速访问工具栏中添加了一个从 Excel 导入按钮。

然后转到选项 > 当前数据库 > 色带名称和 select 您刚刚创建的色带记录。但是如果他们在打开文件时按住 SHIFT 键,他们就可以看到所有的对象、选项等等!为了防止这种情况,我们需要一些 VBA 来禁用和启用该选项。

  1. 在 VBA 编辑器中,放置与此类似的内容:

    If InStr(globalstrPermission, "admin") <> 0 Then 'If logging in as the admin
      Dim prop As Property
      On Error GoTo SetProperty 'if property is already set and appended, skip down to the popup
      Set prop = CurrentDb.CreateProperty("AllowBypassKey", dbBoolean, False) 'create and set the property 
    
      CurrentDb.Properties.Append prop
    
    SetProperty:
      If MsgBox("Do you wanna turn on bypass key?", vbYesNo, "Allow Bypass") = vbYes Then
        CurrentDb.Properties("AllowBypassKey") = True 'MAKE SURE THIS SAYS TRUE OR YOU WILL LOCK YOURSELF OUT OF DEVELOPER TOOLS FOREVER
      Else
        CurrentDb.Properties("AllowBypassKey") = False
      End If
    End If
    

现在当那个函数是 运行 而你 select "no" 时,它会阻止 SHIFT 技巧起作用。但是如果你想让它工作,请登录并单击 "yes" 并关闭数据库并使用 SHIFT 打开它。

随着 post 的拖延,我的措辞变得更加初级,但希望它仍然很容易理解。