我通常使用保存在应用程序自己的文件夹中的 INI 文件来编写 Delphi 应用程序:
ConfigFile:= ChangeFileExt(ParamStr(0), '.ini');
IniFile:= TIniFile.Create(ConfigFile);
try
with IniFile do
begin
// etc
但是,我正在编写一个特定的应用程序,我想使用安装向导 (Inno),并让用户有机会在 Program Files (x86)\MyProg 中安装该应用程序。
对我来说新奇的是 Windows 不会将 INI 文件保存在安装目录中,而是保存在“其他地方”。
通过控制面板卸载应用程序会成功删除 Program Files (x86) 文件夹(包括该文件夹)中的所有项目,但与许多程序一样,如果重新安装,所有配置设置都会恢复。因此它们必须存储在控制面板 |卸载并没有删除。
所以我的问题是在哪里?
谢谢,
约翰。
在下面写入文件Program Files
非管理员用户禁止使用文件夹。如果以非管理员用户身份运行的应用程序尝试在此处写入文件,并且该应用程序没有 UAC 清单,则 Windows 会保护该应用程序Program Files
文件夹,并以静默方式将所有访问重定向到用户配置文件中的 VirtualStore 文件夹。
Windows Vista 或 Windows 7 中的常见文件和注册表虚拟化问题 https://support.microsoft.com/en-us/kb/927387
Windows 7 应用程序兼容性问题……揭秘!!! https://blogs.msdn.microsoft.com/chinmay_palei/2011/01/15/windows-7-application-compatibility-issues-demystified/
在这种情况下,当您将 INI 写入此文件时:
C:\Program Files (x86)\MyProg\MyProg.ini
它实际上被写入这个文件:
%USERPROFILE%\AppData\Local\VirtualStore\Program Files (x86)\MyProg\MyProg.ini
您应该更改您的应用程序以将 INI 文件存储在更合适的位置,例如:
%LOCALAPPDATA%\MyProg\MyProg.ini
Or:
%PROGRAMDATA%\MyProg\MyProg.ini
如果我面向多个操作系统版本,我应该在哪里存储数据和配置文件? https://blogs.msdn.microsoft.com/patricka/2010/03/18/where-should-i-store-my-data-and-configuration-files-if-i-target-multiple-os-versions/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)