2010-05-11 11 views
5

Ho un'app winforms che deve scrivere i log. L'app deve anche funzionare senza avvisi UAC e utilizzando un account non amministratore.Dove si trova un luogo sicuro in cui archiviare i file di registro compatibili con XP, Vista e Windows 7?

Dove posso scrivere i miei registri senza eseguire il controllo delle impostazioni di sicurezza predefinite? Inoltre, questo deve funzionare su Windows XP, Vista e 7.

Punti extra se tutti gli utenti possono scrivere sullo stesso set di file di registro.

risposta

6

Non è possibile (non dovrebbe) codificare il percorso. Chiedi invece a Windows dove archiviarlo chiamando SHGetFolderPath, che può essere utilizzato per restituire la posizione della directory AppData dell'utente corrente (o di tutti gli utenti).

articolo di MSDN, con la soluzione C: http://support.microsoft.com/kb/310294

Delphi Utile esempio: http://delphi.about.com/od/kbwinshell/a/SHGetFolderPath.htm

Si noti che è pericoloso per fare una query di una volta per il percorso, convertire una stringa in assoluto, e memorizzalo nelle tue impostazioni. Perché Windows può cambiarlo. Possono unirsi a un dominio, aggiornare Windows, ecc. E Windows può effettivamente spostare i tuoi file. Se poi punti alla vecchia posizione, senza chiedere di nuovo "dove si trova questa cartella", ti spezzerai. Sono stato lì, fatto ...

1

Utilizzando SHGetFolderPath si ha la possibilità di utilizzare directory per file di registro per utente o globale. Se si utilizza CSIDL_COMMON_APPDATA, quindi: "Queste informazioni non si spostano e sono disponibili per chiunque usi il computer." sembra che sia quello che vuoi.

Problemi correlati