Dove salvo un file di configurazione della mia applicazione???

venerdì 04 febbraio 2011 - 19.14
Tag Elenco Tags  C#  |  .NET 3.5  |  Windows 7  |  Windows Vista  |  Windows XP  |  Visual Studio 2008  |  Access (.mdb)

LuchinoTO Profilo | Newbie

Ciao ragazzi,
avrei un dubbio: dalla mia applicazione non posso scrivere direttamente il file app.config, poiché (giustamente?) la classe ConfigurationManager fornisce l'accesso alle informazioni in sola lettura.
Quindi NON posso registrare nell'app.config impostazioni personalizzabili dall'utente (come banalmente il percorso del database access, ultimo utente che ha eseguito il login, ecc).

Ho pensato quindi di registrare queste informazioni in un altro file XML (che ho chiamato commonConfig.xml), sempre residente nella medesima cartella dell'eseguibile.

Il problema però nasce proprio qui: installando l'applicazione su sistemi Windows 7 (credo sia la stessa cosa su Vista) scopro che i file contenuti nelle cartelle "C:\Programmi", "C:\Programmi (x64)" e simili non possono essere modificati (anche se l'utente ha tutti i privilegi di amministrazione di questo mondo).

Oltre all'ipotesi di installare il programma in una cartella diversa da "C:\Programmi" e simili (che mi suona assurdo), come potrei comportarmi?
Dove potrei salvare il mio file di configurazione personalizzato?
Voi come vi comportate?
Potrebbe essere un'idea salvare in Application.CommonAppDataPath?

Grazie a quanti vorranno fornirmi suggerimenti!

luigidibiasi Profilo | Guru

prova a dare uno sguardo qui:
http://msdn.microsoft.com/it-it/library/cc185092.aspx
Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/

LuchinoTO Profilo | Newbie

Grazie Luigi,
l'articolo che mi hai consigliato mi è stato molto utile!!
Per quanto riguarda invece la cartella in cui posizionare un banalissimo database access? (parlo di applicazione mono-postazione e mono-utente ovviamente).

Non potendolo piazzare nella cartella "..\Programmi" ecc. in quanto sarebbe protetto da scrittura, potrei pensare di usare la cartella restituita da "Application.CommonAppDataPath"?

Se sì, avrei una difficoltà: la proprietà sopraccitata restituisce un percorso del tipo "C:\Documents and settings\All users\Dati applicazioni\<Nome produttore>\<Nome prodotto>\<Numero versione>".
Nell'ipotesi, io vorrei utilizzare la cartella relativa al "Nome prodotto", a prescindere dalla versione...

Grazie in anticipo! Ciao

luigidibiasi Profilo | Guru

>Se sì, avrei una difficoltà: la proprietà sopraccitata restituisce
>un percorso del tipo "C:\Documents and settings\All users\Dati
>applicazioni\<Nome produttore>\<Nome prodotto>\<Numero
>versione>".
>Nell'ipotesi, io vorrei utilizzare la cartella relativa al "Nome
>prodotto", a prescindere dalla versione..
non ho mai usato quella variabile comunque puoi fare così:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
nella variabile b ti trovi tutta la path senza il nome della cartella relativa alla versione
Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5