Domanda

Sto cercando di creare un programma di installazione di Windows utilizzando Nullsoft Install System che richiede l'installazione da parte di un amministratore. Il programma di installazione crea un & Quot; registra & Quot; directory. Poiché gli utenti normali possono eseguire questa applicazione, tale directory deve essere scrivibile dagli utenti normali. Come faccio a specificare che tutti gli utenti dovrebbero avere l'autorizzazione ad avere accesso in scrittura a quella directory nel linguaggio di script NSIS?

Ammetto che questa sembra una specie di cattiva idea, ma l'applicazione è solo un'app interna utilizzata da poche persone su una rete privata. Ho solo bisogno di salvare i file di registro in modo da poter vedere perché l'app si è rotta se succede qualcosa di brutto. Gli utenti non possono essere nominati amministratori.

È stato utile?

Soluzione

Utilizza il AccessControl e aggiungi questo allo script, dove " ; & logs quot; directory si trova nella directory di installazione.

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

Questo dà pieno accesso alla cartella per tutti gli utenti.

Altri suggerimenti

AccessControl::GrantOnFile "<folder>" "(BU)" "FullAccess" non ha funzionato per me su un computer Windows Server 2008. Invece ho dovuto usare questo:

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

S-1-5-32-545 è equivalente a " Utenti " secondo http://support.microsoft.com/default.aspx ? scid = kb; EN-US; Q243330

Invece di modificare le autorizzazioni per le directory in Programmi, perché non posizionare i log in una posizione che è scrivibile da tutti gli utenti.

Vedi la sezione 4.9.7.7 SetShellVarContext nella documentazione NSIS. Puoi usarlo con $ APPDATA per ottenere la cartella dei dati dell'applicazione che è scrivibile per tutti gli utenti.

Ora è un vecchio problema ma, come suggerito da S & # 246; ren APPDATA directory è un bel modo di fare quello che vuoi, il fatto è: Non prendere APPDATA personale dell'utente ma il & Quot; Tutti gli utenti & Quot; APPDATA dir! In questo modo chiunque sarà in grado di accedere al file di registro ;-)

Inoltre, ho letto da qualche parte che l'utilizzo di (BU) su GrantOnFile non funziona bene con alcuni sistemi (Win 7 x64 se ricordo bene), forse dovresti usare il SID " (S-1-5 -32-545) quot &; invece (è il SID di tutti gli utenti, questo valore è una costante su ciascun sistema operativo Windows)

Solo andata: chiama la shell e usa cacls o xcacls .

Perché non creare una directory-log nella directory% APPDATA% dell'utente? Hai davvero bisogno di mettere tutti i log nella directory di installazione? Perché?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top