当WritePrivateProfileString的Filename参数为NULL时,配置文件存于何处?
关于WritePrivateProfileStringA传NULL时INI文件的位置
当你调用WritePrivateProfileStringA("App","key","test", NULL)且最后一个参数为NULL时,函数默认操作的是系统级的WIN.INI文件,但由于Windows的UAC权限控制和文件虚拟化机制,普通权限的程序无法直接写入系统目录下的WIN.INI,系统会自动将写入操作重定向到用户专属的虚拟存储目录。
具体文件路径
对应的WIN.INI文件位于:
C:\Users\<你的用户名>\AppData\Local\VirtualStore\Windows\WIN.INI
- 将
<你的用户名>替换为当前登录的Windows用户名 AppData是隐藏文件夹,需要在文件资源管理器的“查看”选项中开启“显示隐藏的项目”才能看到
验证方法
- 直接打开上述路径下的
WIN.INI文件,搜索[App]节和key=test条目,即可找到你保存的配置内容 - 调用
GetPrivateProfileStringA("App", "key", "default", s, 20,0)时,系统会自动从虚拟存储目录加载对应的数据,因此能正常读取到之前写入的配置
补充说明
这种文件虚拟化是Windows为兼容旧版程序设计的机制:旧程序习惯直接写入系统目录的INI文件,现在系统通过重定向到用户专属目录,既保证程序正常运行,又避免了修改系统文件需要管理员权限的问题,这也是你无需管理员权限就能完成写入的原因。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

