在 Window 7、8 和 10 上,我希望我的应用程序将数据存储在共享位置,以便在 PC 上运行该应用程序的所有用户都将访问相同的数据。数据是可读/可写的。我应该使用什么位置?
Windows 对于程序共享数据有有趣的规则。
-
程序文件 ("
C:\Program Files
" and "C:\Program Files (x86)
") 适用于不可变(只读)程序数据和可执行文件 - 因此此处的文件需要管理权限才能编辑。因此,它对于不应受到损害的重要文件(例如您的主要可执行文件)非常有用。这就是安装程序的原因以提升的权限运行。有一个缺点是,如果您的程序具有自动更新机制,那么它也需要以提升的权限运行。
-
Program Data (
C:\ProgramData
on Windows Vista and later, or C:\Documents and Settings\All Users\Application Data
) is intended for mutable program data - you don't need administrative permissions to create files in this folder, except that once a file has been created only the user that originally created that file can subsequently edit it (though everyone can read it). This is the special CREATOR OWNER
permission.
- 此处对此进行了描述:在 C:\ProgramData\ 中写入时出现权限/所有者问题 https://stackoverflow.com/questions/22107812/privileges-owner-issue-when-writing-in-c-programdata
-
AppData (
C:\Users\(you)\AppData\Local
and C:\Users\(you)\AppData\Roaming
) 是特定于用户的,用于特定于用户的设置、配置和数据。这Local
version 应用于特定于计算机的设置,如果用户使用漫游配置文件,则不应漫游,例如数据缓存(例如浏览器缓存)。
所以在你的情况下ProgramData
看起来很理想,但你需要注意默认值CREATOR OWNER
规则 - 但有一个解决方法:程序的安装程序(将以管理员身份运行)能够更改其 ProgramData 子目录的 ACL 权限,以允许其他用户编辑文件。我建议授予Users
组权限而不是Everyone
以防止未经身份验证的用户可能进行的远程攻击和修改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)