2011-09-16 17 views
7

La cartella ProgramData è il posto migliore per archiviare i file scrivibili dell'applicazione condivisa da tutti gli utenti. Ma quando il programma di installazione di Nsis viene eseguito con i privilegi di amministratore (che è necessario scrivere su Program Files), le cartelle ei file creati nella cartella ProgramData vengono letti solo per tutti gli utenti tranne l'amministratore. Come cambiarlo e avere file scrivibili per tutti gli utenti all'interno della cartella ProgramData?Installer Nullsoft, come rendere scrivibile la sottocartella ProgramData

risposta

7

Non so se questo comportamento è una funzionalità o un bug, ma ho trovato una soluzione alternativa. È necessario il plug-in AccessControl (scaricare e copiare la cartella dei plug-in di Nsis). Inside "install" sezione dello script NSIS mettere qualcosa di simile:

; 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 è equivalente a all users, quindi questo codice offrono il pieno accesso alla cartella specificata e tutti i file dentro a tutti gli utenti.

+2

'AccessControl :: GrantOnFile "$ AppData \ Folder \ * "" (S-1-5-32-545) La linea "" FullAccess "' non è necessaria poiché tutte le cartelle e i file all'interno della 'Cartella 'avranno pieno accesso con la prima riga stessa. – nawfal

1

o impostato tramite riga di comando (Win7 solo): ExecWait 'Icacls "$ AppData \ cartella"/concedere agli utenti: (OI) (CI) M'

+0

windows server 2003 e versioni successive :) – nawfal