Enfoque Universal para el almacenamiento de INI-configuración de tipo y/o ficheros de base de datos en varias máquinas Windows

StackOverflow https://stackoverflow.com/questions/691979

Pregunta

OK, la verdadera confesión de primera:Tal vez sea sólo yo, pero a veces las "mejores prácticas para la configuración de programa" en las máquinas de Windows se siente como que ha cambiado más de acceso de datos de Microsoft estrategias.Todavía estoy ejecutando XP, y en algún lugar a lo largo del camino tipo "vidriosos" acerca de donde MS me quería para almacenar todas mis app de datos, etc.Yo controlaba todas las máquinas codificado, así que realmente no importa.

Ahora estoy escribiendo aplicaciones para "en la naturaleza" apoyo Win98SE arriba.Tengo que prestar atención a todo esto de nuevo.:-\

Por razones que tienen que ver principalmente con fácil la migración a nuevos equipos, yo no soy un gran fan de usar el registro para la configuración de la aplicación-yo prefiero usar los archivos INI, y tienen algunas personas de edad INI componentes que puedo usar para la tarea (Raize, generalmente).Estoy abierto a sugerencias para otros componentes de terceros, si van a hacer esto más fácil o menos complicado.

Básicamente, necesito almacenar la configuración de la aplicación (como recordar las opciones de configuración, etc).

He leído:Registro de vsArchivo INI para almacenamiento de usuario configurables configuración de la aplicación
Dónde se almacenan los ajustes de programa en lugar de HKEY_LOCAL_MACHINE?
Donde debería decir a mi programa win32 mantener sus archivos?
El mejor lugar para almacenar los archivos de configuración y los archivos de registro de Windows, para mi programa?

...por lo menos yo no estoy solo en esta pregunta...;)
(w/disculpas por lo que es algo de que se repita la pregunta, aunque desde un ángulo ligeramente diferente).

SUENA como puedo usar %APPDATA%/Miprograma, y almacenar todos los datos que hay, PERO es esta una VERDAD UNIVERSAL a través de todos los sabores de Windows desde Windows 98 hasta?Si no, ¿cuál es el mejor enfoque, y cuando hizo que el enfoque de venir a la existencia?

Lo que realmente estoy buscando, honestamente, es la manera más fácil de hacer que este problema desaparezca -- yo solo quiero uno (si es posible), simple, fácil, confiable manera de llamar "Mi Programa de la Carpeta de Datos" en cualquiera y en todas las instancias.Se el por encima de lograrlo?

¿Fue útil?

Solución

Hacer programas de Delphi Vista-Ready y de desplazamiento hasta el fondo para: "¿Dónde guardar los datos de la aplicación?"

  

Función GetRoamingUserAppDataPath: string;   // funciona siempre y cuando las personas tienen al menos 4. IE (y Win95 o superior)

Otros consejos

% APPDATA% no parece estar presente en Win95. Me gustaría utilizar SHGetSpecialFolderPath que está disponible en Win98 o Win95 w / IE4.

Las respuestas que tenemos hasta ahora son buenos, sin embargo yo creo que usted está mezclando cosas en su pregunta que no pertenecen juntos, así que no es posible responder por completo a su pregunta.

Su pregunta indica el título

  

ajustes de tipo INI y / o archivos de base de datos

y estos pueden ser dos cosas muy diferentes. Hay que diferenciar entre los archivos que se encuentran por usuario, los archivos que son comunes para todos los usuarios, pero de sólo lectura, y los archivos comunes que cada usuario debe ser capaz de trabajar con ellos.

La primera categoría es fácil, utilizar un directorio adecuado en uno de los CSIDL_APPDATA o CSIDL_PERSONAL carpetas.

La segunda categoría es también fácil, archivos solo necesita ser instalado en el lugar adecuado por el programa de instalación, que se debe ejecutar con permisos adecuados, porque (limitados) los usuarios estándar no serán capaces de escribir en los lugares correctos.

La última categoría, sin embargo es difícil, porque simplemente no es un directorio en todas las instalaciones de Windows que pueden ser asumidas para tener permiso de escritura para todos los usuarios. Especialmente en los entornos comerciales con usuario bloqueado hacia abajo cuentas puede ser que el usuario no tiene permisos de escritura para el disco local en todos, sólo a su directorio de usuario en algún lugar de un servidor en la red. Así que no hay manera simple solo para tomar la ubicación de los datos para su programa y estar seguro de que funcionará -. Que es algo, es muy posible que revisar todos los programas y todos los casos de uso ANEW

Para obtener puntos de bonificación que debe también siempre en cuenta si los archivos deben entrar en el perfil móvil y estar disponibles en todas las máquinas en un dominio, o sea que son específicos de la máquina.

Un consejo que daría es alejarse de los archivos de base de estilo de escritorio como Paradox o archivos de acceso para aplicaciones que necesitan compartir datos entre usuarios en una máquina. Sólo con servidores de bases de datos reales (locales) va a ser capaz de contar con datos de varios usuarios sobre-bloqueados cuentas / máquinas.

No puedo comentar si funciona en todas las versiones, pero sin duda de acuerdo en que los archivos .ini son la respuesta correcta. Cuando XP dice que el uso del registro que lo probé - para un programa. En la casa de implementación mostró que los ajustes necesarios para ser copiado de una máquina a otra - la próxima actualización fue de nuevo a archivos ini

.

Creo que todo el rollo de registro fue una medida contra la piratería de los suyos que querían ocultar como una buena práctica.

Yo tiendo a usar archivos XML en% APPDATA% para mantener mi configuración. Sólo realmente porque XML es más fácil que la de ini para C #. En cualquier caso,% APPDATA% parece una apuesta segura.

No puedo aconsejar sobre si 98SE es compatible con esta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top