Come posso ottenere il percorso dei dati dell’applicazione in Windows utilizzando C ++?

Ho guardato tutto su internet e non ho trovato una soluzione decente che potessi trovare. Voglio essere in grado di programmare in C ++ il percorso “% ALLUSERSPROFILE% \ Application Data” che l’esploratore può tradurre in un percorso reale.

Posso farlo senza fare affidamento sul codice di terze parti?

Utilizzare SHGetFolderPath con CSIDL_COMMON_APPDATA come CSIDL.

 TCHAR szPath[MAX_PATH]; if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath))) { //.... } 

Solo per supplimentare la risposta di Interjay

  1. Dovevo includere shlobj.h per usare SHGetFolderPath .

  2. Spesso potrebbe essere necessario leggere un file da appdata, per fare questo è necessario utilizzare la funzione shlwapi.h ( shlwapi.h è necessario per questo).

 #include  #pragma comment(lib,"shlwapi.lib") #include "shlobj.h" TCHAR szPath[MAX_PATH]; // Get path for each computer, non-user specific and non-roaming data. if ( SUCCEEDED( SHGetFolderPath( NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath ) ) ) { // Append product-specific path PathAppend( szPath, _T("\\My Company\\My Product\\1.0\\") ); } 

Vedi qui per maggiori dettagli.

puoi anche leggere il valore dal registro

percorso = HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell Folders

key = AppData comune