【发布时间】:2015-01-04 02:27:31
【问题描述】:
我们有一个应用程序尝试写入 C:\ProgramData\ 文件夹中的 Access 数据库 (.mdb)。在启用了 UAC 的计算机上,我们发现访问数据库失败,因为它似乎无法创建锁定文件。似乎默认情况下(可能是由于 UAC)用户(包括管理员)默认情况下没有写入应用程序文件夹的权限。
我们认为授予“用户”组对此文件夹的完全权限可以解决问题,但没有任何区别。即使授予“每个人”完全控制权仍然无济于事。解决问题的唯一方法似乎是将数据库移动到另一个文件夹(例如 C:\applicationname),这不是最佳做法,或者通过更改快捷方式以管理员权限运行应用程序。
我们怎样才能让普通用户可以在 C:\ProgramData\ 文件夹中写入(和创建文件)?还是我们滥用了这个文件夹?我的印象是放置共享程序数据(适用于所有用户)的正确位置,许多其他应用程序似乎已将它们的数据放在我的计算机上。
更新:
我发现数据库的克隆副本已放入以下文件夹: C:\Users\\AppData\Local\VirtualStore\ProgramData\
如果我删除此文件夹,应用程序将正常运行。为什么要创建这个文件夹?我能以某种方式阻止这种情况吗?可能是因为安装程序没有给 C:\ProgramData\ 文件夹中的 Users 组足够的权限?
【问题讨论】:
-
我无法重现您的问题。我使用我的“管理员”帐户创建了文件夹“C:\ProgramData\myApp\”,并且默认权限“用户”具有只读访问权限。但是,一旦我授予他们对文件夹的“修改”权限,他们就可以打开数据库并创建锁定文件。
-
我也无法在我自己的机器上重现它,但我可以在两台不同的测试机器和客户的计算机上重现它。我不确定计算机之间有什么区别,因为文件夹权限似乎与我相同。
标签: windows ms-access permissions uac