我有一个Delphi 6应用程序,像大多数Windows应用程序一样,将数据读取/写入用户的“本地应用程序数据”文件夹。我使用下面的代码来确定该文件夹。到目前为止,该代码适用于大多数用户。我也遇到过,其本地应用程序数据不在预期的文件夹中的用户:查找Windows用户的“真实”应用程序数据文件夹?
C:\Users\Bob\AppData\Roaming\
通常情况下,本地应用程序数据文件夹解析为:
C:\Documents and Settings\Bob\Application Data\
是什么奇怪的关于这个用户的特殊情况是,几个通常在HKEY_LOCAL_MACHINE中找到的注册表项实际上位于HKEY_CURRENT_USER中。他们在Windows 7上运行。
缺乏一个更好的词,有没有办法让用户获得“真实”的应用程序数据,这样我可以更好地导航这种情况?如果是在CSIDL_APPDATA,CSIDL_COMMON_APPDATA和CSIDL_LOCAL_APPDATA特殊文件夹之间进行智能选择,那么这样做的逻辑是什么?正如您所看到的,我正在寻找一种通用功能,可以找到正确的应用程序数据文件夹,而不管用户正在运行的Windows版本或其特定的PC配置。
我发现这个堆栈溢出帖子似乎有答案,但它使用.NET库中的函数,我使用的是Delphi 6.如果这个解决方案回答我的问题,有人可以告诉我一个快速的方法来复制它德尔福:
How can i get the path of the current user's "Application Data" folder?
// Function to get the app data special folder.
function GetAppdataFolder: string;
begin
Result := GetSpecialFolderLocation(CSIDL_APPDATA);
end;
@SertacAkyuz - 事实证明,问题的真正原因是用户需要使用管理员权限来安装我的程序,这在大多数用户的系统上不会发生。为了公平对那些已经回复原帖的人,我将帖子恢复为原始形式,并为这个新问题创建了一个新帖子:http://stackoverflow.com/questions/12772615/why-is-my-delphi -6-program-triggering-a-request-for-admin-rights-upon-install-on –
GetSpecialFolderLocation在哪里? (我应该将哪个单元添加到我的使用条款中?) – cja