所有用户的Windows数据存储

时间:2016-11-13 14:09:32

标签: windows

在Window 7,8和10上,我希望我的应用程序将数据存储在共享位置,以便在PC上运行应用程序的所有用户都将访问相同的数据。数据是可读/可写的。我应该使用什么位置?

1 个答案:

答案 0 :(得分:2)

Windows有关程序的有趣规则'共享数据。

  • 程序文件(" C:\Program Files"和" C:\Program Files (x86)")适用于不可变(只读)程序数据和可执行文件 - 因此这里的文件需要管理权限才能编辑。因此,它对于不应泄露的重要文件(例​​如主要可执行文件)非常有用。这就是安装程序以提升的权限运行的原因。如果您的程序具有自动更新机制,那么还有一个缺点就是需要升级。
  • 程序数据(Windows Vista及更高版本上的C:\ProgramDataC:\Documents and Settings\All Users\Application Data)适用于可变程序数据 - 您不需要管理权限来创建文件在此文件夹中,除了创建文件后,只有最初创建该文件的用户可以随后编辑它(尽管每个人都可以阅读它)。这是特殊的CREATOR OWNER权限。
  • AppData C:\Users\(you)\AppData\LocalC:\Users\(you)\AppData\Roaming)是特定于用户的,适用于特定于用户的设置,配置和数据。 Local版本应该用于特定于机器的设置,如果用户使用漫游配置文件(例如数据缓存(例如浏览器缓存))则不应该漫游。

因此,在您的情况下ProgramData看起来很理想,但您需要注意默认的CREATOR OWNER规则 - 但是有一个解决方法:您的程序安装程序(可以运行)作为管理员)能够更改其ProgramData子目录上的ACL权限,以允许其他用户编辑文件。我建议授予Users组权限而不是Everyone,以防止未经身份验证的用户进行远程攻击和修改。