2011-12-06 9 views
5

Ho un'applicazione WPF che deve essere eseguito per tutti gli utenti di una macchina con le stesse impostazioni. Le impostazioni devono essere leggere/scrivere. Sono stato in precedenza la memorizzazione delle impostazioni di configurazione utente in CommonApplicationData, ad esempioDove devo memorizzare le impostazioni dell'applicazione a livello di macchina per utenti non di roaming?

var settingsFile = Path.Combine(Environment.GetFolderPath(
    Environment.SpecialFolder.CommonApplicationData), 
    "[company]", "[product]", "settings.xml"); 

Tuttavia ho letto questa mattina che CommonApplicationData viene utilizzato per i profili comuni, nel senso che non sono specifica macchina. Da quello che riesco a trovare, abbiamo le seguenti opzioni per i dati delle applicazioni (source):

// Store application-specific data for the current roaming user. 
// A roaming user works on more than one computer on a network. 
// A roaming user's profile is kept on a server on the network and is loaded onto a system ' when the user logs on. 
System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 


// Store in-common application-specific data that is used by all users. 
System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); 


// Store application-specific data that is used by the current, non-roaming user. 
System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); 

Per riassumere, le opzioni sono

  • utente singolo, il roaming
  • Tutti gli utenti, il roaming
  • utente singolo, non roaming

cosa ho bisogno è a tutti gli utenti, non roaming. Il mio pensiero iniziale è quello di buttare tutto nella cartella di installazione, ma sembra un po 'vecchia scuola?

Pensieri?

+1

Dove hai letto che "CommonApplicationData" è in roaming? Lo trovo un po 'strano ... –

+0

L'ho letto nel libro di Bill Wagner Effective C#. Comunque questo è l'unico posto in cui posso trovare questo bocconcino così forse è un errore raro da parte di Wagner, e sarei molto interessato a sentire se mi sbaglio su questo. –

+0

Dalla documentazione [MSDN] (http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx): "La directory che funge da repository comune per dati specifici dell'applicazione utilizzati da tutti gli utenti. " –

risposta

2

Here is a good explanation della cartella appdata e altri elementi relativi all'utente in roaming.

Secondo il MSDN Documentation:

CommonApplicationData è "la directory che funge da archivio comune per i dati specifici di applicazione che viene utilizzato da tutti gli utenti"

mentre

LocalApplicationData è "la directory che funge da repository comune per dati specifici dell'applicazione utilizzati dall'utente corrente e non mobile ".

1

La mia preferenza per questo è Application Settings che può essere estesa all'applicazione o per utente come si desidera per impostazione.

Problemi correlati