在 Window 7、8 和 10 上,我希望我的应用程序将数据存储在共享位置,以便在 PC 上运行该应用程序的所有用户都可以访问相同的数据。数据是可读/可写的。我应该使用什么位置?
Dai*_*Dai 11
Windows 有关于程序共享数据的有趣规则。
C:\Program Files”和“ C:\Program Files (x86)”)用于不可变(只读)程序数据和可执行文件——因此这里的文件需要管理权限才能编辑。因此,它对于不应受到损害的重要文件(例如您的主要可执行文件)非常有用。这就是安装程序以提升的权限运行的原因。如果你的程序有自动更新机制,那么它也需要提升运行。C:\ProgramData在 Windows Vista 和更高版本上,或C:\Documents and Settings\All Users\Application Data)用于可变程序数据 - 您不需要管理权限即可在此文件夹中创建文件,除非创建文件后,只有最初创建该文件的用户可以随后编辑它(尽管每个人都可以阅读它)。这是特别CREATOR OWNER许可。
C:\Users\(you)\AppData\Local和C:\Users\(you)\AppData\Roaming)是特定于用户的,用于特定于用户的设置、配置和数据。Local如果用户使用漫游配置文件,则该版本应用于不应漫游的特定于机器的设置,例如数据缓存(例如浏览器缓存)。因此,在您的情况下ProgramData看起来很理想,但您需要注意默认CREATOR OWNER规则 - 但有一个解决方法:您的程序安装程序(将以管理员身份运行)能够更改其 ProgramData 子目录上的 ACL 权限以允许其他用户编辑文件。我建议授予Users组权限,而不是Everyone防止未经身份验证的用户可能进行的远程攻击和修改。