gpt4 book ai didi

delphi - Windows 在哪里存储 INI 文件的替代文件 (Delphi 7)

转载 作者:行者123 更新时间:2023-12-03 15:56:09 27 4
gpt4 key购买 nike

我通常使用保存在应用程序自己的文件夹中的 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 list ,则 Windows 会保护 Program Files 文件夹,并静默重定向对 VirtualStore 文件夹的所有访问在用户的个人资料中。

Common file and registry virtualization issues in Windows Vista or in Windows 7

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

或者:

%PROGRAMDATA%\MyProg\MyProg.ini

Where Should I Store my Data and Configuration Files if I Target Multiple OS Versions?

关于delphi - Windows 在哪里存储 INI 文件的替代文件 (Delphi 7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37276360/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com