2011-03-08 20 views
6

mi aplicación utiliza el estándar app.config para almacenar los datos de configuración pública. Sin embargo, todavía hay algunos otros datos que no son públicos, pero aún deben estar accesibles todo el tiempo, persistentes, modificables desde fuera de la aplicación, así como de forma manual en caso de problemas.¿Cuál es la mejor manera de almacenar datos de configuración no públicos en una aplicación .NET 4.0?

Por ejemplo, imagine que la aplicación almacena cierta información de licencia dentro de un archivo que no debe ser públicamente disponible. Sin embargo, un administrador debe poder editar este archivo usando un bloc de notas o similar (sin editores especiales), de modo que la criptografía queda fuera del juego.

¿Utilizaría almacenamiento aislado? ¿Tienes algunas otras sugerencias? Como la aplicación no utiliza ninguna base de datos, no considere almacenarla como una opción.

Así que la pregunta es cómo almacenar los datos de la aplicación para que no sea tan fácil de modificar a mano como con app.config, pero aún así fácilmente editable para un usuario avanzado.

Respuesta

1

¿Qué tal un archivo incluido?

Me gusta el atributo de archivo en el appSettings Element o el SectionInformation.ConfigSource Property?

<configuration> 
    <appSettings file="machine-specific.config"> 
     <add key="Application Name" value="MyApplication" /> 
    </appSettings> 
</configuration> 

El archivo incluido se puede proteger del acceso público con los derechos de acceso normales al sistema de archivos.

Definitivamente NO usaría almacenamiento aislado para eso. El cifrado sería ideal, pero como eso no es aceptable para usted ...

Usar variables medioambientales también podría funcionar, supongo ... Pero probablemente no lo use yo.

+0

Gracias, me gustaría echarle un vistazo a esta opción. No quiero implementar ni la clave de cifrado ni una herramienta especial para editar dichos archivos a todos los usuarios avanzados de todo el mundo, por lo tanto, el cifrado no es aceptable. –

+0

@Thomasek: Sí, entiendo tus problemas con el cifrado. Me doy cuenta de que olvidé otra ubicación obvia para almacenar la configuración: el sistema ** registro **. Los valores de registro también pueden ocultarse a los usuarios normales. –

+0

¿No tendría acceso un administrador de la máquina de destino a cualquier archivo? – Cosmin

0

He tenido muy buenos resultados Using Settings in C#.

Puede administrar fácilmente la configuración de la aplicación y del usuario, que se almacenará automáticamente en el almacenamiento aislado por la clase que genera Visual Studio. Admiten prácticamente cualquier tipo que se pueda serializar en XML mientras se escribe fuertemente.

+0

Lo siento, es posible que me haya expresado no exactamente ... Estoy hablando de una aplicación implementada, no del código fuente. Por lo que sé, esos archivos de configuración se compilan como recursos incrustados en el exe/dll. Entonces, ¿cómo debería ser un usuario avanzado capaz de editar estos datos? –

+0

La clase generada por Visual Studio le permite cambiar los valores de su configuración en tiempo de ejecución y conservar estos cambios. Puede averiguar en qué lugar del almacenamiento aislado está el archivo con los valores actuales, pero solo crearía un pequeño cuadro de diálogo o algún parámetro de línea de comandos para alimentar la información a la aplicación. – madd0

Cuestiones relacionadas