Il posto migliore per inserire i dati dell'applicazione? [duplicare]
-
03-07-2019 - |
Domanda
Possibile duplicato:
Progetto di installazione VS2008: condiviso (da tutti gli utenti) Dati dell'applicazione File?
Qualcuno può consigliare qual è il posto (percorso) migliore per inserire alcuni dati dell'applicazione che dovrebbero essere accessibili e modificabili da tutti gli utenti.
Ciò sta prendendo in considerazione sia Windows XP che Windows Vista e mi aspetto che il cambiamento in qualsiasi file del percorso sopra NON attivi UAC!
Altri suggerimenti
API Win semplice: SHGetFolderPath con CSIDL_COMMON_APPDATA
come tipo di cartella.
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
Dovrebbe risolvere C: \ Documents and Settings \ All Users \ Application Data \
Da lì, crea sottocartelle come MyCompany \ MyApp
Se si utilizza .NET, Application.CommonAppDataPath dovrebbe funzionare. Assicurati inoltre che la virtualizzazione sia disattivata per la tua applicazione
% ALLUSERSPROFILE% \ Dati applicazioni \ App
questa è probabilmente l'unica directory a cui tutti gli utenti possono accedere senza privilegi elevati.
Se si utilizza .NET, Application.CommonAppDataPath dovrebbe funzionare.
Se gli utenti non modificheranno direttamente i dati e questi verranno modificati solo dall'app, che dire di IsolatedStorage - http://msdn.microsoft.com/en-us/library/3ak841sy (VS.80) .aspx
Checkers fornisce l'indizio vitale per farlo in C o C ++. Quindi ho votato la sua risposta.
Ecco i dettagli che ha lasciato fuori:
// assumes
// company is a pointer to a character sting containing company name
// appname is a pointer to a character string containing application name
// fname is a pointer to a character string cintaining name of file to be created
#include <shlobj.h> // for SHGetFolderPath
#include <direct.h> // for _mkdir
char path[MAX_PATH];
SHGetFolderPath(NULL,CSIDL_COMMON_APPDATA,NULL,NULL,path);
strcat(path,"/");
strcat(path,company);
_mkdir(path);
strcat(path,"/");
strcat(path,appname);
_mkdir(path);
strcat(path,"/");
strcat(path,fname);
// path is now a character string which can passed to fopen
Puoi anche inserirlo in un database.
Per Vista e versioni successive, MS sembra spingere per l'utilizzo di SHGetKnownFolderPath () anziché SHGetFolderPath () . Scegli quale cartella chiedere da elenco di KNOWNFOLDERIDs . Sulla base delle risposte qui, l'equivalente che vorresti sarebbe probabilmente FOLDERID_ProgramData
. Mi rendo conto che questa domanda è piuttosto vecchia, ma immagino per scopi archivistici ..