如果我使用这个Delphi代码
with TIniFile.Create('myapp.ini') do
try
WriteString('SETTINGS', 'key', 'value');
finally
Free;
end;
在默认文件夹中创建一个INI文件,有没有办法检索Windows用来创建文件的绝对路径?
答案 0 :(得分:0)
在后台,TInifile.WriteString
使用WritePrivateProfileString
功能。
来自文档(强调我的):
BOOL WINAPI WritePrivateProfileString( _In_ LPCTSTR lpAppName, _In_ LPCTSTR lpKeyName, _In_ LPCTSTR lpString, _In_ LPCTSTR lpFileName );
lpAppName
[in]要将字符串复制到的部分的名称。如果 部分不存在,它被创建。该部分的名称是 情况下,独立的;字符串可以是大写和。的任意组合 小写字母。
lpKeyName
[in]要关联的键的名称 用一根绳子。如果指定的部分中不存在该键,则为 被建造。如果此参数为NULL,则包括整个部分 该部分中的所有条目都将被删除。
lpString
[in]要写入文件的以空字符结尾的字符串。如果 此参数为NULL,即lpKeyName参数指向的键 被删除。
lpFileName
[in]初始化文件的名称。如果文件是 该函数使用Unicode字符创建,编写Unicode 字符到文件。否则,该函数写入ANSI 字符。如果lpFileName参数不包含文件的完整路径和文件名,WritePrivateProfileString将搜索Windows 该文件的目录。如果该文件不存在,则此功能 在Windows目录中创建文件。
最后一条评论意味着您的程序必须以管理员身份运行。逻辑后果是,如果您的程序不是以管理员身份运行,则默认路径为C:\Users\Windows username\AppData\Local\VirtualStore\Windows
。
因此,要遵守现代Windows规则,最好为ini文件提供完整路径...