我的程序需要一些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”中的文件本质上是不安全的,“本地”/“本地设置”中的文件很可能在一些大公司中不可用 – 所以除非你有充分的理由并且确切地知道你在做什么, “漫游”/“应用程序数据”。
更新:
要获取程序数据的文件夹路径,您应该使用WinAPI:
wchar_t path_buf[MAX_PATH]; SHGetFolderPath( NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, &path_buf[0] );
在Windows Vista函数SHGetFolderPath被替换为SHGetKnownFoldedPath 。 那个旧的函数现在只是SHGetKnownFolderPath的一个包装器。