2012-03-14 15 views
32

En mi sistema, %AppData% lleva a ApplicationData que es C:\Users\<USER>\AppData\RoamingDiferencia entre 'SpecialFolder.LocalApplicationData' y 'SpecialFolder.ApplicationData'?

pero también hay C:\Users\<USER>\AppData\Local
Y para algunos más confusión D:\Users\<USER>\AppData\LocalLow

string local = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); 
string roaming = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

Mi pregunta es, ¿a cuál de estos lugares debería guardar mi solicitud sus datos?

¿Existen directrices sobre cuál de estas ubicaciones usar? ¿Y me estoy dejando abierto a problemas si elijo la ubicación incorrecta?

+0

La carpeta de itinerancia se usa más comúnmente para almacenar datos. No sé la diferencia real. –

Respuesta

44

La carpeta Roaming se copia entre máquinas cuando los perfiles móviles están habilitados (en un entorno de dominio). Úselo para datos de aplicación que quiera compartir entre máquinas. Pero no almacene archivos grandes allí: a los departamentos de TI no les gusta cuando lo hace, y aumenta el tiempo necesario para que el usuario inicie sesión y cierre la sesión a medida que se copian los archivos.

La carpeta Local no se copia entre las máquinas. Úselo para datos de aplicaciones que son específicos de una máquina.

La carpeta LocalLow se utiliza para tareas con poco privilegio (como Internet Explorer). No deberías tener que preocuparte por eso.

Para los archivos que el usuario guardó específicamente, debe colocarlos (de forma predeterminada) en la carpeta Documents.

+1

¿Alguna idea sobre cómo se usan estas carpetas para un usuario de Windows 8 que está conectado a la máquina con una cuenta de Microsoft?¿Es una aplicación de Windows 8 simplemente una bestia completamente diferente, con sus propias API, etc., y las carpetas utilizadas son diferentes/mediadas por una API? ¿Un usuario de Windows 8 que inició sesión con una cuenta MS es un "usuario itinerante"? – Bill

9

Según MSDN la diferencia es que LocalApplicationData estancias en la máquina local y no vagan ... ApplicationData qué deambulan por ejemplo si el usuario inicia sesión en el dominio desde un equipo diferente que se sincronizará ...

El LocalLow se refiere a situaciones específicas como un BHO que se ejecuta en "Modo protegido" de IE ...

Para una aplicación estándar, siempre use ApplicationData. Use LocalApplicationData para cosas que NO deben deambular con el usuario ...

1

De MSDN - Environment.SpecialFolder Enumeration:

ApplicationData - El directorio que sirve como repositorio común para los datos específicos de la aplicación para el usuario móvil actual. Un usuario móvil trabaja en más de una computadora en una red. El perfil de un usuario itinerante se mantiene en un servidor de la red y se carga en un sistema cuando el usuario inicia sesión.

LocalApplicationData El directorio que sirve como repositorio común de datos específicos de la aplicación que utiliza el usuario actual no itinerante.

En resumen, utilizar ApplicationData de perfiles móviles, y LocalApplicationData para los perfiles de itinerancia no.