Security 防止用户创建表

Security 防止用户创建表,security,ms-access,permissions,Security,Ms Access,Permissions,我正在尝试使用工作组安全性保护MS Access 2003 mdb。我已经设置了大部分表(使用新的MDW等),但我无法阻止人们在数据库中创建新表,如果他们有权打开它的话。我错过什么了吗 没有一个帐户有任何允许的权限,我都是通过组来完成的。 用户只有对数据库的Open\Run访问权限,没有对所有其他表(包括MSys*表)的访问权限,并且只有“读取数据”权限 有什么想法吗?或者我是在试图做不可能的事吗 --更新-- 我已经尝试按照建议使用该向导,但仍然存在同样的问题。我创建了一个空白数据库并在其上运

我正在尝试使用工作组安全性保护MS Access 2003 mdb。我已经设置了大部分表(使用新的MDW等),但我无法阻止人们在数据库中创建新表,如果他们有权打开它的话。我错过什么了吗

没有一个帐户有任何允许的权限,我都是通过组来完成的。 用户只有对数据库的Open\Run访问权限,没有对所有其他表(包括
MSys*
表)的访问权限,并且只有“读取数据”权限

有什么想法吗?或者我是在试图做不可能的事吗

--更新--

我已经尝试按照建议使用该向导,但仍然存在同样的问题。我创建了一个空白数据库并在其上运行了向导。分配了2个用户,Me和User,并删除了对标准组的所有访问权限。我将我添加到管理组中,将用户添加到只读组中


如预期的那样,不使用MDW会拒绝访问。以我的身份登录允许完全访问(设计事物、添加数据、删除数据等),以用户的身份登录将允许读取不存在的表中的数据,但不允许添加数据或设计它们(如预期的那样),但仍允许创建新表,然后用户将拥有添加的完全访问权,删除等。

您的用户是否可以使用msAccess的运行时版本?他们将无法创建任何新的访问对象,如表、查询、表单等


而且运行时版本是免费的,所以您还可以获得许可证

您的用户可以使用msAccess的运行时版本吗?他们将无法创建任何新的访问对象,如表、查询、表单等


而且运行时版本是免费的,所以您还可以获得许可证

所以,在发布这个问题一年多后,我又一次尝试去解决它,但他成功了


我遇到了,这表明手动和使用向导保护数据库的标准方法仍然允许用户在Tabes容器上显式创建权限。同样的软件也允许撤销上述权限,因此现在我可以拥有一个完全安全的数据库,任何用户都可以访问mdb,而无需使用特殊的mdb,但他们只能访问和编辑我希望他们访问的数据。

因此,在发布此问题一年多后,我又一次尝试解决它,但他的时间与成功


我遇到了,这表明手动和使用向导保护数据库的标准方法仍然允许用户在Tabes容器上显式创建权限。同样的软件也允许撤销上述权限,因此现在我可以拥有一个完全安全的数据库,任何用户都可以访问mdb,而无需使用特殊的mdb,但他们只能访问和编辑我希望他们访问的数据。

您没有正确保护它。您必须运行安全向导,该向导将创建一个新的工作组文件,该文件的管理组与默认工作组文件(所有文件都具有相同的管理组)不同。通常的方法是删除内置组和用户的所有权限,并使用客户组提供访问权限。我已经添加了更多详细信息,包括向导。我开始认为这是工作组安全性的一个限制,我将不得不在代码中解决。顺便说一句:很长一段时间以来,我一直把你的一句话作为一个信号,因为它每次都让我微笑:quote(大卫·W·芬顿):我们可能会以完全相同的方式感到困惑,但困惑可能像空值一样,不可比较。哇,我不记得这样的一句话了。我以前很聪明!是否已删除顶级数据库对象的权限?我已经忘记了这里的细节,但我知道我有一个应用程序,只有在它阻止创建表的情况下才是安全的(其他一切都是完全开放的)。不过,我无法检查它是如何完成的。你没有正确地保护它。您必须运行安全向导,该向导将创建一个新的工作组文件,该文件的管理组与默认工作组文件(所有文件都具有相同的管理组)不同。通常的方法是删除内置组和用户的所有权限,并使用客户组提供访问权限。我已经添加了更多详细信息,包括向导。我开始认为这是工作组安全性的一个限制,我将不得不在代码中解决。顺便说一句:很长一段时间以来,我一直把你的一句话作为一个信号,因为它每次都让我微笑:quote(大卫·W·芬顿):我们可能会以完全相同的方式感到困惑,但困惑可能像空值一样,不可比较。哇,我不记得这样的一句话了。我以前很聪明!是否已删除顶级数据库对象的权限?我已经忘记了这里的细节,但我知道我有一个应用程序,只有在它阻止创建表的情况下才是安全的(其他一切都是完全开放的)。但是,我无法检查它是如何完成的。运行时版本仍然允许使用DAO(或ADO)创建表,因此这不起作用:-(我对此不太确定。如果用户可以生成一些VB代码并使用它在access文件上发送DDL指令,这将是正确的,但对于运行时版本的access,这是不可能的。然后,如果您的用户足够聪明,能够做这类事情,他们就可以在Excel或Word中编写相同的代码模块创建这些表。在这种情况下,您必须切换到SQL SERVER以增强数据库上的某些真正的安全策略。运行时版本仍允许使用DAO(或ADO)创建表,因此这不起作用:-(我对此不太确定。如果用户有可能生成一些VB代码并使用它在access文件上发送DDL指令,这将是正确的,但对于运行时版本的access,这是不可能的。然后,如果用户足够聪明,能够做这类事情,他们就可以编写