Die Empirum Setup.inf bietet die Möglichkeiten, neben der eigentlichen Installation eines Programmes, die Berechtigungen auf eine Datei oder Verzeichnis anzupassen. Somit ist alles was zur Installation und Nutzung eines Programmes gehört in der Setup.inf vereint.
Die Anpassung der NTFS Berechtigung ist dann notwendig, wenn das paketierte Programm:
- in Laufzeit Änderungen im gleichen Verzeichnis vornimmt (INI+LOG Dateien, o.ä)
- eine AutoUpdate Funktionen für sich selbst anbietet
Wo und wie wird die Berechtigungsvergabe vorgenommen?
Die „Wo“ Frage ist recht einfach beantwortet. Dafür gibt es die [Security:Product] Sektion. Die Security:Product Sektion muss nach der Installation durchgeführt werden, damit der Ordner oder die Dateien bereits vorhanden sind. In den Standard Inf Vorlagen ist dies auch der Fall.
Kommen wir zur „Wie“ Frage …
Um die Berechtigung zu setzen, gibt für Windows 2000 und neuer den Befehl FileDaclEx.Add. Der Befehl ist in der Setup.inf wie folgt aufgebaut:
FileDaclEx.Add (<Datei>, <Name>, <Operation>, <Rechte>, <Vererbung>)
Will man nun der Gruppe der lokalen Benutzer, der im Standard alle Domänen Benutzer angehören Vollzugriff gewähren, dann sieht der Befehl wie folgt aus:
FileDaclEx.Add ("%App%", "%$LocalUsers%", GRANT, ALL, SUB_CONTAINERS_AND_OBJECTS_INHERIT)
Will man jedoch nicht so freizügig mit den Berechtigungen umgehen und der Gruppe lediglich Ändern Berechtigungen geben, dann wird der Befehl etwas komplexer, da es für Ändern (Change) keine einzelne Berechtigung gibt. Die Berechtigung „Ändern“ entspricht den nachfolgenden Teil-Berechtigungen: TRAVERSE LIST_DIRECTORY READ_ATTRIBUTES READ_EA ADD_FILE ADD_SUBDIRECTORY WRITE_ATTRIBUTES WRITE_EA DELETE READ_DAC EXECUTE
Das sieht in der Windows 10 Oberfläche nicht viel anders aus, wenn man mal in den Sicherheitseinstellungen unter Erweitert nachschaut.
Wie sieht nun ein solcher Befehl in der Praxis aus? Hier ein paar Beispiele:
FileDaclEx.Add ("%App%", "%$LocalUsers%", GRANT, TRAVERSE LIST_DIRECTORY READ_ATTRIBUTES READ_EA ADD_FILE ADD_SUBDIRECTORY WRITE_ATTRIBUTES WRITE_EA DELETE READ_DAC, SUB_CONTAINERS_AND_OBJECTS_INHERIT) FileDaclEx.Add ("%ProgramFiles%\%Developername%", "%$LocalUsers%", GRANT, TRAVERSE LIST_DIRECTORY READ_ATTRIBUTES READ_EA ADD_FILE ADD_SUBDIRECTORY WRITE_ATTRIBUTES WRITE_EA DELETE READ_DAC, SUB_CONTAINERS_AND_OBJECTS_INHERIT) FileDaclEx.Add ("%App%\Application.ini", "%$LocalUsers%", GRANT, TRAVERSE LIST_DIRECTORY READ_ATTRIBUTES READ_EA ADD_FILE ADD_SUBDIRECTORY WRITE_ATTRIBUTES WRITE_EA DELETE READ_DAC, SUB_CONTAINERS_AND_OBJECTS_INHERIT)
Wenn ihr diese Anforderung häufiger habt, so könnt ihr einen der obigen Befehle in eure Paketierungsvorlagen (Template.inf, MSI.inf, Unattend.inf) einbauen und bei Bedarf den Kommentar (;) wegnehmen und den Befehl den Anforderungen nach anpassen.
Ist das alles?
Weiterführende Informationen, da die Security:Sektion noch mehr kann als NTFS Berechtigungen zu setzen:
- Welche Befehle darüber hinaus zur Verfügung stehen und welche andere Berechtigungen ihr setzen könnt, findet ihr in der Online Hilfe unter „Security:Product„.
- Welche Benutzer bzw. Gruppen per Variable und somit sprachunabhängig zur Verfügung stehen findet ihr am Ende der Tabelle „Vordefinierte Umgebungsvariablen“ der Online-Hilfe.