4

我正在构建一个涉及

  • 在本地机器上缓存数据的 Windows 服务,
  • 用户进程读取该数据并写入自己的数据,
  • 该服务反过来将该数据写回服务器。

我应该把数据文件放在哪里,以便所有用户共享它们并且可以读/写?该软件将在桌面有时非常锁定的公司环境中运行,例如,某些用户没有对 C:\Program Files 的写入权限。

我不认为 C:\Documents And Settings\All Users\Application Data\ 是一个好的候选者——我认为默认情况下只有管理员和高级用户在这里有写权限。

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

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

4

1 回答 1

3

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

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

c:\users\public\AppData 是最接近的。在这里修改应用程序文件夹的 ACL 似乎是最好的方法。当然,一旦使用了 ACL 修改,文件夹真的可以在任何地方创建。但这可能会让系统管理员感到惊讶,并导致奇怪的安全漏洞。

于 2010-01-20T10:29:59.950 回答