Frage

Ich versuche, einen Windows-Installer zu bauen mit Nullsoft Install System, die Installation von einem Administrator erfordert. Der Installer macht ein „Protokoll“ Verzeichnis. Da normale Benutzer diese Anwendung ausführen zu können, muss das Verzeichnis von normalen Benutzern beschreibbar sein. Wie gebe ich, dass alle Benutzer die Berechtigung Schreibzugriff zu haben, um das Verzeichnis in der NSIS-Skriptsprache haben sollten?

Ich gebe zu, das klingt ein wie eine Art schlechter Idee, aber die Anwendung ist nur eine interne app von nur ein paar Leuten in einem privaten Netzwerk verwendet. Ich brauche nur die Protokolldateien gespeichert, so dass ich sehen kann, warum die App gebrochen ist, wenn etwas Schlimmes passiert. Die Benutzer können nicht Administrator vorgenommen werden.

War es hilfreich?

Lösung

Mit der Access Plugin und dann diese an das Skript hinzufügen, wo die „Protokolle“ Verzeichnis ist in dem Installationsverzeichnis.

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

Das gibt vollen Zugriff auf den Ordner für alle Benutzer.

Andere Tipps

AccessControl::GrantOnFile "<folder>" "(BU)" "FullAccess" hat für mich auf einem Windows Server 2008-Computer nicht funktionieren. Stattdessen hatte ich eine diese verwenden:

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

S-1-5-32-545 ist equivalente auf "Benutzer" nach http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q243330

Statt die Berechtigungen auf Verzeichnisse unter Program Files ändern, warum setzen Sie die Protokolle nicht in einer Position, die von allen Benutzern beschreibbar ist.

Siehe 4.9.7.7 SetShellVarContext Abschnitt in Ihrer NSIS-Dokumentation. Sie können es mit $ APPDATA verwenden, um den Anwendungsdatenordner zu erhalten, die für alle Benutzer beschreibbar ist.

Es ist ein altes Problem jetzt aber wie von Sören APPDATA Verzeichnis vorgeschlagen eine nette Art und Weise zu tun, was Sie wollen, das Ding ist: Nehmen Sie nicht die Benutzer-personnal APPDATA aber die „All Users“ APPDATA dir! Auf diese Weise jemand in der Lage, die Log-Datei zuzugreifen; -)

Auch habe ich irgendwo gelesen, dass die Verwendung (BU) auf dem GrantOnFile nicht gut mit einigen Systemen (Win 7 x64, wenn ich mich gut erinnere) arbeiten, sollten Sie vielleicht die SID verwenden „(S-1-5-32-545 )“statt (es die SID Alle Benutzer ist, ist dieser Wert eine konstante auf jedem Windows-OS)

Eine Möglichkeit: Rufen Sie die Shell, und verwenden Sie cacls oder xcacls .

Warum nicht ein Log-Verzeichnis in% AppData% Verzeichnis des Benutzers? Brauchen Sie wirklich alle Protokolle in das Installationsverzeichnis setzen? Warum?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top