我正在构建一个涉及
的产品我应该在哪里放置数据文件,这样它们将被所有用户共享并可读/写?该软件将在企业环境中运行,在这种环境中,桌面有时会被锁定,因此例如某些用户将无权使用C:\ Program Files。
我不认为C:\ Documents And Settings \ All Users \ Application Data \是一个很好的候选者 - 我认为默认情况下只有Admins&高级用户可以在此处进行写访问。
我可以使用每个用户的Application Data文件夹,但这会有点痛苦,因为不同的人可以使用每台机器......所以如果只有一个共享位置就会更简单。
我正在使用C#.net 2005开发,但这可能不太相关。
答案 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)中。 最佳做法是在其中创建一个与应用程序同名的文件夹,然后将数据放在其中。