2011-09-16 4 views
7

La carpeta ProgramData es el mejor lugar para almacenar los archivos grabables de su aplicación compartidos por todos los usuarios. Pero cuando el instalador de Nsis se ejecuta con privilegios de administrador (que se requiere para escribir en Archivos de programa), las carpetas y los archivos creados en la carpeta ProgramData son de solo lectura para todos los usuarios excepto para el administrador. ¿Cómo cambiar eso y tener archivos grabables para todos los usuarios dentro de la carpeta ProgramData?Instalador de Nullsoft, cómo hacer que la subcarpeta ProgramData sea modificable

Respuesta

7

No sé si este comportamiento es una característica o un error, pero he encontrado una solución. Se necesita el complemento AccessControl (descargue y copie la carpeta de complementos de Nsis). Dentro de "instalación" de la escritura Nsis poner algo como esto:

; This is important to have $APPDATA variable 
; point to ProgramData folder 
; instead of current user's Roaming folder 
SetShellVarContext all 

; This sets us permissions 
AccessControl::GrantOnFile "$APPDATA\Folder" "(S-1-5-32-545)" "FullAccess" 
AccessControl::GrantOnFile "$APPDATA\Folder\*" "(S-1-5-32-545)" "FullAccess" 

S-1-5-32-545 es equivalente a all users, por lo que este código le conceda acceso completo a la carpeta especificada y todos los archivos dentro de todos los usuarios.

+2

'AccessControl :: GrantOnFile "$ AppData \ Folder \ * "" (S-1-5-32-545) La línea "FullAccess" 'no es necesaria ya que todas las carpetas y archivos dentro de la" Carpeta "tendrán pleno acceso con la primera línea. – nawfal

1

o conjunto a través de línea de comandos (Win7 solamente): ExecWait 'Icacls "$ AppData \ carpeta"/otorgar a los usuarios: (OI) (CI) M'

+0

windows server 2003 y superior en realidad :) – nawfal

Cuestiones relacionadas