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 ..

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