建议的文件位置,所有Windows用户都可以编辑?

时间:2010-01-20 01:17:50

标签: windows file permissions file-permissions shared-directory

我正在构建一个涉及

的产品
  • 在本地计算机上缓存数据的Windows服务
  • 用户进程读取数据并编写自己的数据,
  • 服务依次将该数据写回服务器。

我应该在哪里放置数据文件,这样它们将被所有用户共享并可读/写?该软件将在企业环境中运行,在这种环境中,桌面有时会被锁定,因此例如某些用户将无权使用C:\ Program Files。

我不认为C:\ Documents And Settings \ All Users \ Application Data \是一个很好的候选者 - 我认为默认情况下只有Admins&高级用户可以在此处进行写访问。

我可以使用每个用户的Application Data文件夹,但这会有点痛苦,因为不同的人可以使用每台机器......所以如果只有一个共享位置就会更简单。

我正在使用C#.net 2005开发,但这可能不太相关。

2 个答案:

答案 0 :(得分:3)

不幸的是你没有真正的选择。你必须(你真的必须)调用SHGetSpecialFolderLocation来获取c:\ users \ public \ AppData的路径(这是你上面链接的文件夹的名称,但在Vista和可能的Windows 7上) 然后你必须在其中创建自己的应用程序文件夹。然后,您必须使用安全API修改创建的文件夹的ACL。

系统上没有文件夹,其中包含一个默认ACL,允许多个非管理员用户读取和写入相同的文件。

c:\ users \ public \ AppData是最接近的。在这里修改应用程序文件夹的ACL似乎是最好的方法。当然,一旦人们采用ACL修改,该文件夹就可以在任何地方创建。但这可能会给系统管理员带来惊喜并导致安全漏洞。

答案 1 :(得分:0)

通常在Windows驱动器的根目录中有一个隐藏文件夹 c:\ProgramData

在C#中获取此文件夹路径的正确方法-

string folder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);

这是一个隐藏的文件夹,所有用户均可读取/写入,并且存在于所有现代Windows版本(包括7,8和10)中。 最佳做法是在其中创建一个与应用程序同名的文件夹,然后将数据放在其中。