Dónde Almacenar escritura de datos a ser compartidos por todos los usuarios en vista de un instalador?
-
02-07-2019 - |
Pregunta
Mi aplicación se instala a través de los institutos nacionales de estadística.
Quiero el instalador para instalar el programa para todos los usuarios.
Puedo hacer esto, mediante la instalación de los 'archivos de programa' directorio.
Hay un archivo de base de datos (firebird), que todas las cuentas de usuario en el sistema deben compartir.
Si me guarde este archivo de base de datos en la 'archivos de programa' directorio será de sólo lectura.
Si puedo guardarlo en el los usuarios de directorio APPDATA que cada uno tenga una copia diferente, cuando un usuario agrega los datos de los demás no la ven.
Opción 1 - En mi directorio app en 'archivos de programa' crear 'Datos' en el directorio, en mi instalador de hacer esta dir de lectura-escritura por todos, de tal manera que el usuario 'archivos de programa' la virtualización no una patada en el que todos los usuarios pueden actualizar el archivo y ver los cambios de los demás.
Otras opciones ?
Solución
Los datos para todos los usuarios deben ser almacenados en %ALLUSERSPROFILE%, o llamar a SHGetFolderPath() con el parámetro CSIDL_COMMON_APPDATA para obtener el área de almacenamiento.
Ver http://www.deez.info/sengelha/2006/02/28/windows-vista-changes/ para obtener más detalles.
Otros consejos
En algún lugar bajo el perfil sería el lugar obvio.Creo que hay algunas reglas acerca de quién obtiene de lectura/escritura por defecto, pero el MS documentación recomienda si usted necesita algo diferente para crear un subdirectorio y establecer las Acl derecho en el instalador.
Esto es un agujero de seguridad, consulte: http://blogs.msdn.com/oldnewthing/archive/2004/11/22/267890.aspx
Específicamente me gustaría utilizar:
SetShellVarContext all
SetOutPath $APPDATA
File "MyInsecurelySharedFile.txt"
Ver el Los institutos nacionales de estadística de secuencias de comandos de Referencia para obtener más información.