Mam aplikację Delphi 6, która, podobnie jak większość aplikacji systemu Windows, odczytuje/zapisuje dane w folderze "lokalne dane aplikacji" użytkownika. Używam poniższego kodu, aby określić ten folder. Do tej pory ten kod działał dla większości moich użytkowników. Mam napotkał użytkownika, którego lokalna aplikacja danych nie jest w oczekiwanym folderze:Znajdowanie "prawdziwego" folderu danych aplikacji użytkownika systemu Windows?
C:\Users\Bob\AppData\Roaming\
Zazwyczaj folder app dane lokalne postanawia:
C:\Documents and Settings\Bob\Application Data\
Co jest dziwnego w konkretnej sytuacji tego użytkownika jest, że kilka klucze rejestru zwykle znalezione w HKEY_LOCAL_MACHINE znajdują się w HKEY_CURRENT_USER. Działają w systemie Windows 7.
Z braku lepszego słowa, czy istnieje sposób na uzyskanie "prawdziwych" danych aplikacji dla użytkownika, aby lepiej poradzić sobie z tą sytuacją? Jeśli chodzi o inteligentny wybór między specjalnymi folderami CSIDL_APPDATA, CSIDL_COMMON_APPDATA i CSIDL_LOCAL_APPDATA, jaka jest logika tego działania? Jak można się przekonać, szukam funkcji uniwersalnej, która może wykorzenić poprawny folder danych aplikacji, niezależnie od wersji systemu Windows, z której korzysta użytkownik, lub od konfiguracji komputera.
Znalazłem ten post przepełnienia stosu, który wydaje się mieć odpowiedź, ale używa funkcji z biblioteki .NET i używam Delphi 6. Jeśli to rozwiązanie odpowiada na moje pytanie, czy ktoś może mi szybko podać kopię tego pytania Delphi:
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 - okazało się, że prawdziwą przyczyną problemu było to, że użytkownik musiał zainstalować mój program z uprawnieniami administratora, co nie dzieje się na większości systemów użytkownika. Aby być uczciwym wobec tych, którzy już odpowiedzieli na oryginalny post, cofnąłem wpis do pierwotnego formularza i utworzyłem nowy wpis dla nowego pytania: http://stackoverflow.com/questions/12772615/why-is-my-delphi -6-program-wyzwalanie-a-żądanie-dla-administratora-uprawnień-po instalacji- –
Gdzie jest GetSpecialFolderLocation? (Którą jednostkę należy dodać do mojej klauzuli zastosowania?) – cja