¿Cuál es la mejor ubicación para mantener el archivo de configuración de programas en Windows?
-
18-09-2019 - |
Pregunta
Mi programa requiere algunos detalles de configuración para ser guardados en un archivo .ini. Este programa también instala extensiones de IE y Firefox y quiero leer estos archivos .ini de estas extensiones también. Si seguía en ini "... AppData / Roaming ..." la extensión IE en modo protegido no será capaz de leer / escribir. Por lo que yo sé que sólo AppData / LocalLow sólo puede ser capaz de leer en modo protegido. Si yo estoy moviendo todos los detalles de mi configuración para este "... AppData / LocalLoe ..." va a trabajar todos los tiempos? Es esta la forma std? todo lo que he escrito es en el contexto de Vista, va a trabajar con XP? Win7?
Solución
Véase mi respuesta a esta pregunta: ¿Cómo decidir dónde almacenar el estado de cada usuario? ¿Registro? ¿Datos de aplicación? Almacenamiento aislado?
citar a partir de ahí:
Los archivos en la carpeta del usuario "Roaming" en Vista o "Datos de programa" en XP moverse con el usuario - por lo que cualquier configuración y los datos deben ser almacenados allí
.Los archivos bajo "local" y "LocalLow" en Vista y "Configuración local" en XP no lo hacen, por lo que es un buen lugar para los archivos temporales, las cosas que están vinculados a la computadora o los datos específicos que pueden ser recalculada.
En Vista, como parte de las nuevas características de seguridad que todos conocemos y el amor, puede hacer que los programas que se ejecutan en "modo de integridad de baja" (por ejemplo, Internet Explorer en modo protegido), esos programas se ejecutan con privilegios reducidos y no pueden acceder a archivos en el perfil del usuario. - a excepción de los archivos de la carpeta "LocalLow"
Así que, en conclusión, los archivos almacenados en "LocalLow" son inherentemente inseguro y archivos en "Configuración local" "local" / es probable que no esté disponible en algunas grandes empresas - lo menos que tenga una buena razón y sabe exactamente lo que está haciendo ir con "Roaming" / "datos de programa".
ACTUALIZACIÓN:
- Cuando se utiliza el perfil de itinerancia (grande cooperar ambientes) el contenido de local y LocalLow puede (y será) desaparecen sin previo aviso.
- Esos son todos los parámetros de cada usuario, si el servidor se ejecuta bajo una cuenta de diffrent que el usuario (por ejemplo, sistema o red) van a obtener copias de diffrent de esas carpetas.
Otros consejos
Para obtener la ruta de la carpeta de datos de programa que puedes usar API de Windows:
wchar_t path_buf[MAX_PATH];
SHGetFolderPath( NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, &path_buf[0] );
En función de Windows Vista SHGetFolderPath se sustituyó SHGetKnownFoldedPath . Esa función avanzadas es simplemente un contenedor para SHGetKnownFolderPath.