Utilizar carpeta "Documents and settings\...\Datos de programa "

27/10/2006 - 12:01 por Francisco Rodríguez | Informe spam
Hola a todos.

Ya envié un mensaje hace tiempo relacionado, en parte, con este asunto. Pero
hay cosas que no me quedan muy claras sobre ello.

Para utilizar las buenas prácticas de programación recomendadas y evitar
problemas de permisos con usuarios estándar o restringidos que utilicen una
aplicación de escritorio para Windows, "me estoy quitando" de malas
costumbres como escribir en "Archivos de programa\MiPrograma" y cosas así
(desde hace unos meses, nunca es tarde para rectificar, supongo).

Para ello hago que la aplicación, al iniciarse (no he visto otro modo de
hacerlo, pero lo habrá), se cree su directorio en "\Documents and
settings\AllUsers", o sea:

\Documents and settings\AllUsers\[MiEmpresa]\[MiPrograma]

Y ahí ya lo que haga falta: más subdirectorios, archivos de configuración,
temporales, etc. Para hacerlo utilizo
"Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)".
No utilizo "Application.CommonApDataPath" porque eso me devuelve la
siguiente ruta:

\Documents and settings\AllUsers\[MiEmpresa]\[MiPrograma]\[Version]

Utilizo "AllUsers" porque de momento no tengo necesidad de perfiles
distintos para cada usuario.

Y las dudas son las siguientes:

- ¿Es "correcto" lo que estoy haciendo, o al menos es "asumible"? Vamos, que
si no es una chapuza lo que hago, pregunto.

- Según las recomendaciones, sé que debería usar el último formato (el que
incluye la versión). Pero, ¿qué ocurre cuando se cambia la versión? Si
utilizo esa carpeta para guardar configuraciones en un xml, por ejemplo, ¿no
es un "coñazo" tener que andar copiando la configuración (y todo lo que
necesite) a la carpeta de la nueva versión?, ¿o hay algo que se me ha pasado
por alto en este asunto?

No sé si me habré explicado bien. Gracias, un saludo.

Francisco Rodríguez
 

Leer las respuestas

#1 Alberto Poblacion [MVP]
27/10/2006 - 13:31 | Informe spam
"Francisco Rodríguez" wrote in message
news:uP7ak7a%
- ¿Es "correcto" lo que estoy haciendo, o al menos es "asumible"? Vamos,
que si no es una chapuza lo que hago, pregunto.



Es razonablemente correcto, pero para una aplicación de .Net hay una
opción mejor: Usar el almacenamiento aislado (IsolatedStorage). Desde la
aplicación abres el almacenamiento aislado indicándole si lo quieres aislar
por usuario y assembly o por usuario, assembly y dominio de aplicación, y
también si lo quieres itinerante (roaming), de forma que viaje de máqina en
máquina junto con el perfil itinerante del usuario. Ya se encarga .Net de
elegir el directorio más adecuado bajo cada sistema operativo para guardar
los archivos propiamente dichos.
Como limitación, hay que decir que solo funciona "por usuario", asi que
no te servirá si necesitas el "All Users" como has indicado. Pero si no te
importa separar los datos por cada usuario, IsolatedStorage es probablemente
tu mejor opción.

Preguntas similares