Ho un'applicazione Delphi 6 che, come la maggior parte delle applicazioni Windows, legge/scrive i dati nella cartella "dati dell'applicazione locale" dell'utente. Io uso il codice qui sotto per determinare quella cartella. Fino ad ora, quel codice funzionava per la maggior parte dei miei utenti. Ho incontrato un utente il cui locale Dati applicazioni non è nella cartella atteso:Trovare la cartella dati "vera" di un utente Windows?
C:\Users\Bob\AppData\Roaming\
Di solito la cartella dei dati applicazione locale di delibera di:
C:\Documents and Settings\Bob\Application Data\
Ciò che è strano in particolare la situazione di questo utente è che molti le chiavi di registro normalmente presenti in HKEY_LOCAL_MACHINE si trovano in HKEY_CURRENT_USER. Esse sono in esecuzione su Windows 7.
Per mancanza di una parola migliore, c'è un modo per ottenere i dati dell'applicazione "veri" per un utente in modo da poter navigare meglio in questa situazione? Se si tratta di scegliere in modo intelligente tra le cartelle speciali CSIDL_APPDATA, CSIDL_COMMON_APPDATA e CSIDL_LOCAL_APPDATA, qual è la logica per farlo? Come puoi vedere, sto cercando una funzione per tutti gli usi che possa estirpare la cartella dati dell'applicazione corretta indipendentemente dalla versione di Windows in esecuzione o dalla specifica configurazione del PC.
Ho trovato questo post di Overflow dello stack che sembra avere la risposta ma utilizza la funzione dalla libreria .NET e sto usando Delphi 6. Se questa soluzione risponde alla mia domanda, qualcuno può dirmi un modo rapido per replicarlo a Delfi:
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 - si è scoperto che la vera causa del problema era che l'utente aveva bisogno di installare il mio programma con diritti di amministrazione, cosa che non accade sulla maggior parte dei sistemi dell'utente. Per essere onesti con coloro che avevano già risposto al post originale, ho ripristinato il post nel modulo originale e creato un nuovo post per la nuova domanda: http://stackoverflow.com/questions/12772615/why-is-my-delphi -6-program-triggering-a-request-per-admin-rights-on-install-on –
Dove si trova GetSpecialFolderLocation? (Quale unità dovrei aggiungere alla mia clausola sugli usi?) – cja