Domanda

Qual è il posto giusto per archiviare i file di dati del programma che sono gli stessi per tutti gli utenti ma devono essere scrivibili per il programma? Quale sarebbe la posizione equivalente su MS Windows XP? Ho letto che C: \ ProgramData non è scrivibile dopo l'installazione da parte di utenti normali. È vero? Come posso recuperare quella directory a livello di codice usando Platform SDK?

È stato utile?

Soluzione

SHGetFolderPath () con CSIDL di CSIDL_COMMON_APPDATA.

Ulteriori informazioni su http://msdn.microsoft .com / it-it / library / bb762181 (VS.85) aspx

Se è necessario il percorso in un file batch, è anche possibile utilizzare la variabile di ambiente% ALLUSERSPROFILE%.

Altri suggerimenti

C'è un ottimo riassunto delle diverse opzioni qui: http://blogs.msdn.com/cjacks/archive/2008/02/05/where-should-i-write-program-data-instead -di-programma-files.aspx

  

Dove devo scrivere i dati del programma   Invece di Programmi?

     

È un aggiornamento del codice applicazione comune   questo: " la mia applicazione era solita scrivere   file per programmare i file. Sembrava   un posto buono per dirlo come un altro   altro. Aveva il nome della mia applicazione   già e perché i miei utenti lo erano   amministratori, ha funzionato bene. Ma ora vedo   che questo potrebbe non essere un posto fantastico   attaccare le cose come pensavo una volta,   perché con UAC anche gli amministratori   eseguito con privilegi di tipo utente standard   La maggior parte delle volte. Quindi, dove dovrei   metti invece i miei file? "

In realtà SHGetFolderPath è obsoleto.

SHGetKnownFolderPath dovrebbe essere usato invece.

Puoi usare:

CString strPath;
::SHGetSpecialFolderPath(NULL, strPath.GetBuffer(1024), CSIDL_COMMON_APPDATA, FALSE);

Vedi L'articolo di Raymond Chen su questa specifica domanda .

In breve, stai chiedendo una falla di sicurezza .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top