Rechtevergabe für Ordner, Dateien und Registry-Einträge bei der Installation

Oftmals ist es notwendig, die Zugriffsrechte für Ordner, Dateien bzw. (auch das soll noch verwendet werden) Registry-Einträge einzuschränken. Vielfach liest man dann Anleitungen, wie dem Windows Installer (MSI) Scripts als Custom Actions untergeschoben werden, um selbiges zu bewerkstelligen. Dabei geht es einfacher und sicherer.

Mit Hilfe der LockPermissions Table kann das nämlich mit Bordmitteln erledigt werden. Nach einer Anfrage habe ich meine schon etwas angestaubte MSI-Vergangenheit hervorgekramt und will auch nicht versäumen, das Ganze hier für die Nachwelt zu erhalten.

Hier ein Snapshot der LockPermissions Table, in der jeweils ein Registry Key, File bzw. Folder (müssen in den entsprechenden Tabellen des MSI definiert sein) mit verschiedenen Rechten für User bzw. Administratoren versehen werden.

In der Spalte 'User' wird der entsprechende Username oder besser Gruppenname (engl. Bezeichnung) eingetragen, für die die Einschränkung gelten soll.

Das Aha-Erlebnis kommt allerdings in der Spalte 'Permissions'. Was soll ich dort eintragen? Man muß sich schon etwas (sehr) mit Programmierung beschäftigen, um darauf zu kommen, daß die Konstanten in C++ Header-Dateien zu finden sind. Das sind nämlich dieselben, die ein Entwickler, welcher die Win32 APIs verwendet, bemühen muß. Man findet sie im Windows Plattform SDK.

Hier noch ein Beispiel für die Berechnung. Ja, es handelt sich meist um eine Berechnung von Hexadezimalwerten, da sich eine Konstante oftmals aus der bitweisen (OR-) Verknüpfung von anderen Konstanten zusammensetzt.

Natürlich muß das Setup dann mit 'elevated Privileges' ausgeführt werden (z.B. per Group Policy).