Pregunta

Bueno, si quiero almacenar datos para una máquina de aplicación amplia sólo tiene que utilizar

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

Y si quiero para almacenar datos por usuario yo uso

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

Pero lo que si quiero guardar datos por instancia de aplicación? que podría utilizar la carpeta que la aplicación se almacena en pero los "archivos de programa" carpetas no están hechos para este tipo de almacenamiento de datos si entiendo bien ...

Edit: Para aclarar lo que quiero decir si instalo la aplicación 2 veces en carpetas differnet ... no lo siento casos funcionamiento

.
¿Fue útil?

Solución

No sé de cualquier otra aplicación que lo hace.

Si me quedo dos copias de Visual Studio, por ejemplo, espero que la configuración de la última instancia cerrados a ser los que persistieron.

Si se asigna una instancia un identificador único (GUID) ¿cómo reutilizar ese valor próxima vez que ejecute la aplicación? ¿O usted desea conseguir un nuevo conjunto de valores cada vez que se ejecuta la aplicación?

Si desea volver a utilizar, puede crear sub directorios numerados (1, 2, 3, 4, etc.) y cada vez que ejecute la aplicación escribir un archivo de bloqueo a ese directorio. A continuación, comprobar la presencia del archivo de bloqueo e incrementar el número hasta que encuentre una carpeta abierta.

Actualizar

A la luz del comentario añadido - por qué no obtener la ruta del ejecutable y crear una carpeta en que

?

Si el usuario no tiene derecho a esa carpeta Habría que crear algún tipo de correspondencia entre la ubicación y un GUID (por ejemplo) que luego se agregará a la ruta configuración de la aplicación y la configuración del usuario.

Otros consejos

¿Por qué no almacenar los datos en el directorio temporal Path.GetTempPath. Puede utilizar una subcarpeta para su aplicación y otra subcarpeta (tal vez un GUID como nombre sería útil) para la instancia. Me gustaría poner en práctica alguna clase gerente que implementa IDisposable para permitir la eliminación de la ruta de la instancia cuando se cierra la aplicación.

Crear una carpeta de la instancia ya sea bajo la carpeta de datos de usuario o la carpeta de datos de la máquina si es necesario hacerlo. Su aplicación podría eliminar los datos de la ONU quería en la salida. Aunque @ChrisF tiene razón sobre el comportamiento más habitual.

Una posibilidad sería la de generar una identificación única primera vez el programa se ejecuta y almacenarlo en algún lugar específico para el programa (tal vez un archivo de configuración local).

A continuación, cuando se desea acceder a los archivos de esa copia específica de la aplicación, basta con utilizar

System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "\" + uniqueid);

o

System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "\" + uniqueid);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top