在Windows中是ProgramData的替代文件吗?

时间:2011-12-10 14:00:52

标签: windows desktop configuration-files

我正在编写桌面应用,需要一个文件夹...

  • 存在于Windows 7和Vista中
  • 对所有用户都是通用的(对于商店配置数据)。
  • 应用程序可以在没有管理员权限的情况下保存数据(不像“ProgramData”)。
  • 是标准的(我不想在“C:”,桌面或其他地方创建另一个应用专用文件夹。)
  • “程序文件”当然不是一个选项。

您能建议一个合适的文件夹,还是更好地使用注册表?

4 个答案:

答案 0 :(得分:7)

建议的方法是在“ProgramData”下面(即CSIDL_COMMON_APPDATA / FOLDERID_ProgramData)在安装时创建一个专用于您的应用程序的文件夹。

如您所知,CSIDL_COMMON_APPDATA文件夹仅供标准用户阅读。因此,您的安装程序需要为其创建一个ACL,以便允许您访问所需的文件夹。

这是满足您的要点中列出的所有标准的解决方案。

你提到了注册表。注册表中没有任何区域在所有用户之间共享,但标准用户可以写入。虽然您可以使用ACL来授予对注册表更多的许可访问权限,但实际上并非如此。请忘记我甚至提到了这种可能性!

答案 1 :(得分:2)

如果您的应用是.NET,请使用CommonApplicationData - 您可以致电GetFolderPath获取真实位置。

编辑 - 根据评论:

您需要正确设置ACL - 有关如何执行此操作的示例源代码,请参阅http://www.codeproject.com/Tips/61987/Allow-write-modify-access-to-CommonApplicationData

答案 2 :(得分:1)

公共用户目录怎么样?例如:C:\Users\Public\LibrariesC:\Users\Public\Documents

我在几台Windows 7计算机上发现了这些文件夹。我不确定它是否总是存在,但可能是一种选择。我希望为公共用户提供类似%appdata%的内容,但我找到的最接近的是Public\Libraries

(作为旁注,似乎C:\Users\Public\Desktop确实需要管理员写信。)

答案 3 :(得分:0)

如何使用%APPDATA%/ Company / Product作为目录?