2011-02-25 13 views
11

Mi aplicación necesita, como la mayoría, almacenar datos. La aplicación se utilizó previamente en XP solo donde almacenaría los datos en Program Files. Ahora que nuestros clientes se están moviendo a Windows 7 tuve que actualizarlo para que almacenara los datos en una nueva carpeta. Opté por la carpeta ApplicationData porque pensé que se me permitiría acceder sin necesitar UAC.Dónde almacenar datos de la aplicación en Windows 7 y Vista

Ahora, en algunas máquinas con Windows 7, esto está bien, pero en otras el acceso a la carpeta falla, presumiblemente debido a permisos, pero cuando se ejecuta con privilegios de administrador, el programa funciona bien.

¿Estoy utilizando la carpeta incorrecta o estos casos son atípicos? En cualquier caso, ¿cuál es la mejor práctica para este tipo de cosas?

Estoy utilizando la siguiente C# SpecialFolder para obtener la ubicación de la carpeta AppData.

System.Environment.SpecialFolder.ApplicationData 

Respuesta

10

System.Environment.SpecialFolder.ApplicationData es por usuario y itinerancia. Eso no suena como lo que quieres. Parece que desea una configuración amplia de la máquina y debe usar System.Environment.SpecialFolder.CommonApplicationData.

Dado que CommonApplicationData se comparte entre todos los usuarios, el control de acceso predeterminado es limitado. Por defecto, los usuarios estándar no pueden escribir en esta ubicación. La práctica recomendada es crear una subcarpeta de CommonApplicationData en el momento de la instalación y asignarle ajustes de control de acceso adecuados.

+0

¿Necesitaré UAC para acceder a 'CommonApplicationData' como lo hago' ApplicationData'? ¿No significaría eso que los datos se comparten entre todos los usuarios en la misma PC? – Chris

+0

@Chris "¿No significa que los datos se comparten entre todos los usuarios en la misma PC?" Bueno, sí, pero antes lo almacenabas en 'Program Files', que abarca toda la máquina. –

2

David tiene razón. Hasta donde yo sé, también hay alguna diferencia si implementa su aplicación a través de ClickOnce o Installer: la primera permite unos subconjuntos de permisos que el instalador normal. Debo confesar que no soy un experto en eso.

De seguro, Archivos de programa es el peor lugar para almacenar, incluso desde XP.

+0

Te refieres a Program Files, ProgramData el nombre de la carpeta appdata común en NT6 – Anders

+0

Ya! ... Se me está yendo mal la cabeza ... Gracias Anders! –

Cuestiones relacionadas