我有一個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