en mi aplicación Necesito almacenar configuraciones que son 'globales' (es decir, no específicas del usuario) en una ubicación conocida y predecible.¿Guardando datos 'globales' como un usuario estándar?
Quiero que la aplicación se pueda ejecutar desde cualquier lugar (como usuario estándar, NO administrador), incluyendo copias múltiples de diferentes ubicaciones y poder leer y escribir los archivos de configuración guardados.
Los datos deben tener acceso de lectura y escritura para TODOS los usuarios estándar, no solo uno.
Con esto en mente, las cuatro opciones indicadas aquí son inapropiados: http://msdn.microsoft.com/en-us/library/bb206295(VS.85).aspx#ID0E1BA
¿Cuáles son mis alternativas?
Mi aplicación está escrita solo en C++ y para Windows. Necesito apoyar Windows XP y superior.
Gracias.
EDIT:
Para aclarar, ignoran las condiciones de carrera causadas por varias instancias. Esta pregunta solo tiene que ver con DONDE ALMACENAR LOS DATOS. No puedo ver en cualquier lugar adecuado que sea:
- predecible (por ejemplo,% APPDATA% \ Foo es un camino 'predecible', pero, por desgracia-usuario específico)
- global (por ejemplo,% ProgramData% \ Foo es una ruta global, pero, lamentablemente, sólo el usuario que crea tiene acceso de escritura)
- accesibles (un usuario ordinario ha de ser capaz de crear nuevos archivos en el directorio dado, esto se aplica a todos los usuarios en el sistema)
"puede hacer que el instalador escriba algo en una subclave HKLM \ SOFTWARE \ He hecho esto en aplicaciones de escritorio ampliamente distribuidas. Tengo el instalador dando permisos de usuario estándar para escribir en esta clave. –
@Jim: No mencioné configurar la ACL para una subclave HKLM en algo escribible por usuarios estándar (lo que también podría hacerse para un subdirectorio del directorio del programa) porque creo que generalmente se considera una mala práctica (aunque yo ' no estoy seguro de que estoy de acuerdo). Pensé que también podría ser un problema con la certificación del logotipo, aunque no sé si eso es correcto o no. –