2016-11-13 57 views
1

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

+0

您的应用程序是否安装在程序文件目录中?如果是的话,你可以使用应用程序的文件夹来存储数据。如果没有,你可以使用'Program Files \ Common Files'文件夹。 –

+0

@Sádáššƒƒƒӽ这不是'Common Files'的用途。 “Common Files”目前尚未被使用,但它的目的是为多个(可能是单独安装的)应用程序共享的不可变的通用组件,例如库和实用程序 - 典型的例子是(旧的,2007年以前的)微软公式编辑器,例如,可以通过单独的Word和PowerPoint独立安装进行安装。 – Dai

+0

@戴谢谢,不知道。我有点想'Common Files'是一个常见的*转储*:P。你的回答非常丰富。不知道这一切。 ;-) –

回答

2

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\LocalC:\Users\(you)\AppData\Roaming)是用户特定的,并且旨在用于用户特定的设置,配置和数据。 Local版本应该用于特定于计算机的设置,如果用户使用漫游配置文件(例如数据缓存(例如浏览器缓存)),该设置不应该漫游。

所以你的情况ProgramData看起来理想,但你必须要小心默认CREATOR OWNER规则 - 但有一个解决办法:你的程序的安装程序(这会以管理员身份运行)必须对改变ACL权限的能力其ProgramData子目录允许其他用户编辑文件。我建议授予Users组权限而不是Everyone以防止未经身份验证的用户进行远程攻击和修改。

相关问题