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
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.
o impostato tramite riga di comando (Win7 solo): ExecWait 'Icacls "$ AppData \ cartella"/concedere agli utenti: (OI) (CI) M'
windows server 2003 e versioni successive :) – nawfal
'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