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.
Avete provato? Windows.Storage.ApplicationData.Current.LocalFolder; – Xeun
Il namespace Windows è disponibile anche su WindowsForm - .Net 4.0? – paulinodjm
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