【发布时间】:2017-08-01 10:00:33
【问题描述】:
我有一个程序从文件 ".\abcd.ini" 中读取 GetPrivateProfileString - 即它将在当前目录中查找 ini 文件。
如果没有找到ini文件,则在第三个参数中设置默认值GetPrivateProfileString。
我有一个安装程序,它将程序安装到c:\program files (x86)\abcd\client 目录。
最初,安装程序还在同一目录中安装了一个带有特定配置文件字符串键/值对的 abcd.ini 文件。发布后,我将安装程序更改为不安装任何 ini 文件。
但是,程序继续从我提供的旧 ini 文件中获取值,即使该目录中不存在它。
在进行系统范围的搜索后,我在 c:\Users\myusername\AppData\Local\VirtualStore\Program Files (x86)\abcd\Client 中找到了 abcd.ini 的副本
一旦我删除了这个,程序就可以正常运行(好像没有ini文件一样)。
谷歌搜索似乎使用了虚拟存储,因为 myuser 对 c:\program 文件 (x86) 没有完全权限。但是,程序本身不会写入 ini 文件,它只会从中读取。
这真的是它应该的样子吗?为什么将ini文件复制到AppData&如果没有本地副本,为什么程序会从那里读取?
我使用的是 Windows 10 64 位。
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
-
如果要禁用 VirtualStore,请添加清单文件。请参阅stackoverflow.com/a/4730128/1983398 了解更多信息。
标签: c windows winapi appdata virtualstore