Windows数据存储为所有用户

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

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

  • 程序文件 (“ C:\Program Files ”和“ C:\Program Files (x86) ”)适用于不可变(只读)程序数据和可执行文件 – 因此这里的文件需要管理权限才能编辑。 因此,它使它对不应该受到危害的重要文件(例​​如,您的主要可执行文件)有用。 这就是安装程序以提升的权限运行的原因。 如果你的程序有一个自动更新机制,那么还有一个缺点,那就是需要升级。
  • 程序数据 (Windows Vista和更高版本,或C:\Documents and Settings\All Users\Application Data上的C:\ProgramData )用于可变的程序数据 – 您不需要管理权限就可以在此文件夹中创建文件,一旦创建了一个文件,只有最初创建该文件的用户可以随后对其进行编辑(尽管每个人都可以阅读)。 这是CREATOR OWNER的特殊权限。
    • 这在这里描述: 在C:\ ProgramData \中编写时的特权/所有者问题
  • AppDataC:\Users\(you)\AppData\LocalC:\Users\(you)\AppData\Roaming )是用户专用的,用于用户特定的设置,配置和数据。 如果用户正在使用漫游配置文件(例如数据缓存(例如浏览器缓存)),则Local版本应该用于不应漫游的机器特定设置。

所以在你的情况下, ProgramData看起来很理想,但是你需要小心默认的CREATOR OWNER规则 – 但是有一个解决方法:你的程序的安装程序(它将以admin身份运行)能够更改ProgramData子目录的ACL权限,其他用户编辑文件。 我建议授予Users组权限而不是Everyone以防止未经身份验证的用户进行远程攻击和修改。