Pregunta

Estoy intentando crear un instalador de Windows utilizando Nullsoft Install System que requiere instalación por parte de un administrador.El instalador crea un directorio de "registros".Dado que los usuarios habituales pueden ejecutar esta aplicación, los usuarios habituales deben poder escribir en ese directorio.¿Cómo especifico que todos los usuarios deben tener permiso para tener acceso de escritura a ese directorio en el lenguaje de escritura NSIS?

Admito que esto suena como una mala idea, pero la aplicación es sólo una aplicación interna utilizada sólo por unas pocas personas en una red privada.Solo necesito guardar los archivos de registro para poder ver por qué la aplicación no funciona si sucede algo malo.Los usuarios no pueden convertirse en administradores.

¿Fue útil?

Solución

Utilizar el Control de acceso complemento y luego agréguelo al script, donde el directorio "logs" está en el directorio de instalación.

AccessControl::GrantOnFile "$INSTDIR\logs" "(BU)" "FullAccess"

Eso brinda acceso completo a la carpeta para todos los usuarios.

Otros consejos

AccessControl::GrantOnFile "<folder>" "(BU)" "FullAccess" no funcionó para mí en una máquina con Windows Server 2008.En lugar de eso tuve que usar este:

AccessControl::GrantOnFile "<folder>" "(S-1-5-32-545)" "FullAccess"

S-1-5-32-545 es equivalente a "Usuarios" según http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q243330

En lugar de cambiar los permisos en los directorios en Archivos de programa, ¿por qué no colocar los registros en una ubicación en la que todos los usuarios puedan escribir?

Consulte la sección 4.9.7.7 SetShellVarContext en su documentación de NSIS.Puede usarlo con $APPDATA para obtener la carpeta de datos de la aplicación en la que todos los usuarios puedan escribir.

Es un problema antiguo ahora, pero como lo sugiere el directorio APPDATA de Sören, es una buena manera de hacer lo que quieres, la cuestión es:¡No tome el APPDATA personal del usuario sino el directorio APPDATA de "Todos los usuarios"!De esta manera cualquiera podrá acceder al archivo de registro ;-)

Además, leí en alguna parte que usar (BU) en GrantOnFile no funciona bien con algunos sistemas (Win 7 x64 si no recuerdo mal), tal vez deberías usar el SID "(S-1-5-32-545)" en su lugar. (es el SID de todos los usuarios, este valor es una constante en cada sistema operativo Windows)

De una sola mano:llama al shell y usa cacls o xcacls.

¿Por qué no crear un directorio de registro en el directorio %APPDATA% del usuario?¿Realmente necesitas poner todos los registros en el directorio de instalación?¿Por qué?

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