2011-12-06 22 views
5

Tengo una aplicación WPF que debe ejecutarse para todos los usuarios de una máquina con la misma configuración. La configuración debe ser de lectura/escritura. Yo he estado guardando previamente los parámetros de configuración de usuario en CommonApplicationData, por ejemplo¿Dónde debo almacenar la configuración de la aplicación en toda la máquina para usuarios no itinerantes?

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

Sin embargo leí esta mañana que CommonApplicationData se utiliza para perfiles móviles, lo que significa que no son específicos de la máquina. De lo que puedo encontrar, tenemos las siguientes opciones para los datos de aplicación (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); 

En resumen, las opciones son

  • usuario único, en itinerancia
  • Todos los usuarios, la itinerancia
  • Usuario único, no móvil

Lo que necesito son todos los usuarios, no itinerantes. Mi primer pensamiento es arrojarlo todo a la carpeta de instalación, ¿pero eso parece un poco viejo?

¿Pensamientos?

+1

¿Dónde leíste que 'CommonApplicationData' está en roaming? Lo encuentro un poco extraño ... –

+0

Lo leí en el libro de Bill Wagner Effective C#. Sin embargo, ese es el único lugar donde puedo encontrar este bocado así que tal vez sea un error raro por parte de Wagner, y estaría muy interesado en saber si estoy equivocado al respecto. –

+0

De la documentación de [MSDN] (http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx): "El directorio que sirve como un repositorio común para los datos específicos de la aplicación que se utiliza por todos los usuarios ". –

Respuesta

2

Here is a good explanation de la carpeta appdata y otros elementos relacionados con el usuario itinerante.

De acuerdo con la MSDN Documentation:

CommonApplicationData es "el directorio que sirve como repositorio común para los datos específicos de la aplicación que se utiliza por todos los usuarios"

mientras que

LocalApplicationData es "el directorio que sirve como un repositorio común para datos específicos de la aplicación que es utilizado por el usuario actual, no itinerante ".

1

Mi preferencia para esto es Application Settings que puede ser la aplicación de ancho o por usuario que desee por configuración.

Cuestiones relacionadas