哪个是在WINDOWS中保存程序configuration文件的最佳位置?

我的程序需要一些configuration细节保存在.ini文件中。 这个程序也安装扩展到IE和Firefox,我也想从这些扩展名读取这些.ini文件。 如果我把.ini保存在“… AppData / Roaming …”中,保护模式下的IE扩展将不能读/写。 据我所知,只有AppData / LocalLow只能读取保护模式。 如果我将所有的configuration细节移动到这个“… AppData / LocalLoe …”它会一直工作吗? 这是标准的方式吗? 我写的所有东西都是在Vista环境下,是否可以与XP一起使用? Win7的?

看到我对这个问题的回答: 如何决定在哪里存储每个用户的状态? 注册? 应用程序数据? 孤立的存储?

从那里引用:

Vista中用户的“漫游”文件夹中的文件或XP中的“应用程序数据”中的文件随用户移动 – 所以任何设置和数据都应存储在那里。

vista中的“Local”和“LocalLow”下的文件和XP中的“Local Settings”下的文件都没有,所以它是临时文件的好地方,与特定计算机或可重新计算的数据有关。

在Vista中,作为我们都知道并喜欢的新安全功能的一部分,您可以使程序以“低完整性模式”运行(例如IE处于保护模式),这些程序运行时权限减少,无法访问文件用户的配置文件 – “LocalLow”文件夹下的文件除外。

因此,总之,存储在“LocalLow”中的文件本质上是不安全的,“本地”/“本地设置”中的文件很可能在一些大公司中不可用 – 所以除非你有充分的理由并且确切地知道你在做什么, “漫游”/“应用程序数据”。

更新:

  1. 当使用配置文件漫游(大型合作环境)时,Local和LocalLow的内容可以(而且将会)消失,恕不另行通知。
  2. 这些都是每个用户的设置,如果你的服务器运行在一个不同的帐户比用户(例如,系统或网络),他们将得到这些文件夹的不同副本。

要获取程序数据的文件夹路径,您应该使用WinAPI:

wchar_t path_buf[MAX_PATH]; SHGetFolderPath( NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, &path_buf[0] ); 

在Windows Vista函数SHGetFolderPath被替换为SHGetKnownFoldedPath 。 那个旧的函数现在只是SHGetKnownFolderPath的一个包装器。