2010-04-10 13 views
6

Hasta Windows Vista guardé los datos de mi aplicación en el directorio donde estaba ubicado el programa. El lugar más común era "C: \ Program Files \ MyApplication". Como sabemos, en Vista y luego el usuario común no tiene derecho a escribir en la carpeta "Archivos de programa". Así que mi primera idea fue guardar los datos de la aplicación en la carpeta "Todos los usuarios \ Datos de la aplicación". ¡Pero parece que esta carpeta también tiene restricciones de escritura!¿El mejor directorio para almacenar datos de aplicaciones con derechos de lectura/escritura para todos los usuarios?

Para resumir, mis requisitos son:

  • La carpeta debe existir bajo Windows XP y superiores.
  • Todos los usuarios del sistema deben tener derechos de lectura/escritura \ de creación para esta carpeta y sus subcarpetas y archivos.
  • Quiero tener solo una copia de archivos \ archivos para todos los usuarios.

Respuesta

2

A menudo es bueno usar variables de entorno para mantener las cosas más genéricas.

Vista ha cambiado algunas cosas, con NTFS Junction Points. Ver http://www.svrops.com/svrops/articles/jpoints.htm

De todos modos, utilizando% appdata% debe poner automagicamente archivos en el lugar que le corresponde en XP/Vista/7

+1

% appdata% no es un área común de escritura compartida, ¿o sí? – RBarryYoung

+0

Me refiero a cada usuario del sistema de Windows. – Wodzu

1

No hay tal lugar. Incluso en Windows XP (y probablemente 2000 también) nunca existió tal ubicación; simplemente pensamos que sí porque todos corrimos con privilegios administrativos. No es hasta que Vista nos obliga a ejecutarnos como usuarios limitados que nos damos cuenta de nuestras suposiciones incorrectas. Vas a tener que establecer explícitamente los permisos en tu directorio.

+0

Gracias Luke, creo que configurar privilegios durante el proceso de instalación en la cuenta de administrador. – Wodzu

+0

Si no hay tal ubicación, entonces ¿qué es System.Windows.Forms.Application.CommonAppDataPath de .NET (normalmente se resuelve en C: \ Documents and Settings \ All Users \ Application Data \ CompanyName \ ProductName \ VersionNum)? –

+1

Los permisos predeterminados para Todos los usuarios \ Datos de aplicación no otorgan acceso completo a cuentas de usuario limitadas. Si un usuario administrativo crea un archivo allí, un usuario limitado no tendrá acceso de escritura a ese archivo. Parece que la pregunta original estaba tratando de lograr exactamente esto, por lo que es necesario modificar la DACL. – Luke

0

Crearía una subcarpeta como Todos los usuarios \ Datos de aplicación \ YourAppName \ Shared, de modo que quede claro que solo esa carpeta contendrá los archivos que todos los usuarios puedan escribir, configurando los privilegios en el instalador.

Cuestiones relacionadas