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