2015-01-13 12 views
6

Ho bisogno di leggere e scrivere file che contengono dati specifici dell'applicazione, condivisi tra tutti gli utenti.Come ottenere la cartella dati specifica dell'applicazione (ProgramData)?

Ho provato a utilizzare Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), ma restituisce solo C: \ ProgramData.

La mia domanda è:

Esiste un sistema come Path.GetDirectoryName(Application.UserAppDataPath), che mi darà la cartella esatta di scrivere, secondo il mio nome e la versione?

Oppure è ProgramData non è il posto giusto per farlo.

Grazie.

+0

Avete provato? Windows.Storage.ApplicationData.Current.LocalFolder; – Xeun

+0

Il namespace Windows è disponibile anche su WindowsForm - .Net 4.0? – paulinodjm

+0

Hmm, bella domanda, ma io non la penso così, mi dispiace. Ma dovresti trovare sicuramente un percorso che corrisponda ai tuoi desideri qui: http://www.codeproject.com/Tips/370232/Where-should-I-store-my-data – Xeun

risposta

4

Esiste un sistema come Path.GetDirectoryName (Application.UserAppDataPath), che mi darà la cartella esatta da scrivere, in base al nome e alla versione dell'applicazione?

No, non esiste, almeno durante l'esecuzione su Windows 7 (non so su applicazioni Windows 8/WinRT/Windows Store). La soluzione fattibile è solo per concatenare l'output Environment.GetFolderPath(...) con un percorso personalizzato per l'applicazione. In genere, per ridurre le possibilità di conflitto, potrebbe essere qualcosa come YourOrganization\YourApplication o YourFullName\YourApplication, eventualmente anche versione accodata.

Oppure ProgramData non è il posto giusto per farlo.

Questo è il posto giusto per archiviare informazioni a livello di applicazione su disco. Le informazioni relative alla tua applicazione e diverse per ogni utente Windows che accede alla macchina dovrebbero invece andare in <User folder>\AppData\Roaming\... o <User folder>\AppData\Local\....

Attenzione: come qualcuno già accennato nei commenti, di solito si ha la necessità di diritti di amministratore per poter lavorare all'interno C: \ ProgramData ..., quindi si avrebbe bisogno di preparare un progetto di installazione che, durante l'installazione di fase, creerebbe la cartella all'interno di ProgramData e darà i permessi giusti.