Regini - Vererbung von Berechtigungen
Hallo liebe Helfer 
Ich frage um Hilfe bei folgender Problematik: Ich möchte an PC's beim installieren ein Skript ausführen, welche Berechtigungen in der Registry erteilt.
Folgendes habe ich mir bereits zusammengeschustert, und es funktioniert
Es ist eigentlich nur ein kleines Tool (VBS) welches Regini benutzt und ein paar Berechtigungen setzt.
set oFSO = CreateObject("Scripting.FileSystemObject")
strFileName = oFSO.GetTempName
set oFile = oFSO.CreateTextFile(strFileName)
oFile.WriteLine "\registry\machine\software\wow6432node\Ubisoft [1 5 7 17]"
oFile.Close
' Change registry permissions with regini.exe
'
set oShell = CreateObject("WScript.Shell")
oShell.Run "regini " & strFileName, 8, true
' Delete temp file
'
oFSO.DeleteFile strFileName
WScript.Echo "Done"
Jetzt ist leider die Lage, dass diese Berechtigungen nicht vererbt werden.
Wenn man es händisch macht, werden diese vererbt, und genau das möchte ich jetzt auch per Skript erreichen.
Weiß jemand was ich bei meinem Tool verändern muss, damit die Vererbung aktiviert wird?
Im Endeffekt rufe ich nur eine .ini Datei mit folgendem Inhalt auf
\registry\machine\software\wow6432node\Ubisoft [1 5 7 17]
In der Command Line durch REGINI "Pfad" (zur .ini Datei)
Gibt es vielleicht eine Alternative für mich anstatt REGINI?
Und ich möchte das wirklich per Skript lösen ;)
Mir ist klar dass das anders besser geht.
Links zur Hilfestellung sind ebenfalls sehr willkommen und Danke bereits im Voraus für eure Hilfe.
Gruß
Ich frage um Hilfe bei folgender Problematik: Ich möchte an PC's beim installieren ein Skript ausführen, welche Berechtigungen in der Registry erteilt.
Folgendes habe ich mir bereits zusammengeschustert, und es funktioniert
Es ist eigentlich nur ein kleines Tool (VBS) welches Regini benutzt und ein paar Berechtigungen setzt.
set oFSO = CreateObject("Scripting.FileSystemObject")
strFileName = oFSO.GetTempName
set oFile = oFSO.CreateTextFile(strFileName)
oFile.WriteLine "\registry\machine\software\wow6432node\Ubisoft [1 5 7 17]"
oFile.Close
' Change registry permissions with regini.exe
'
set oShell = CreateObject("WScript.Shell")
oShell.Run "regini " & strFileName, 8, true
' Delete temp file
'
oFSO.DeleteFile strFileName
WScript.Echo "Done"
Jetzt ist leider die Lage, dass diese Berechtigungen nicht vererbt werden.
Wenn man es händisch macht, werden diese vererbt, und genau das möchte ich jetzt auch per Skript erreichen.
Weiß jemand was ich bei meinem Tool verändern muss, damit die Vererbung aktiviert wird?
Im Endeffekt rufe ich nur eine .ini Datei mit folgendem Inhalt auf
\registry\machine\software\wow6432node\Ubisoft [1 5 7 17]
In der Command Line durch REGINI "Pfad" (zur .ini Datei)
Gibt es vielleicht eine Alternative für mich anstatt REGINI?
Und ich möchte das wirklich per Skript lösen ;)
Mir ist klar dass das anders besser geht.
Links zur Hilfestellung sind ebenfalls sehr willkommen und Danke bereits im Voraus für eure Hilfe.
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 275056
Url: https://administrator.de/forum/regini-vererbung-von-berechtigungen-275056.html
Ausgedruckt am: 11.04.2025 um 10:04 Uhr
6 Kommentare
Neuester Kommentar

Moin,
machs doch mit Powershell, hier ein Beispiel für deinen Key in HKLM und deinen angegebenen Berechtigungen:
Gruß jodel32
machs doch mit Powershell, hier ein Beispiel für deinen Key in HKLM und deinen angegebenen Berechtigungen:
$key = (get-item "HKLM:\software\wow6432node\Ubisoft").Name.replace("HKEY_LOCAL_MACHINE\","")
$regkey = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey($key,[Microsoft.Win32.RegistryKeyPermissionCheck]::ReadWriteSubTree)
$acl = $regkey.GetAccessControl()
# Administrators FullControl
$rule = new-object System.Security.AccessControl.RegistryAccessRule((new-object System.Security.Principal.SecurityIdentifier('S-1-5-32-544')),"FullControl","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($rule)
# Creator FullControl
$rule = new-object System.Security.AccessControl.RegistryAccessRule((new-object System.Security.Principal.SecurityIdentifier('S-1-3-0')),"FullControl","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($rule)
# World FullControl
$rule = new-object System.Security.AccessControl.RegistryAccessRule((new-object System.Security.Principal.SecurityIdentifier('S-1-1-0')),"FullControl","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($rule)
# System FullControl
$rule = new-object System.Security.AccessControl.RegistryAccessRule((new-object System.Security.Principal.SecurityIdentifier('S-1-5-18')),"FullControl","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($rule)
#Rules speichern
$regkey.SetAccessControl($acl)
$regkey.close()

Das ist die WellKnown SID der Administratoren:
Die Liste der SIDs findest du hier: https://support.microsoft.com/en-us/kb/243330/de
https://msdn.microsoft.com/de-de/library/ms147899%28v=vs.110%29.aspx
In diesem Fall wollen wir ja an alles vererben, deshalb muss das auf "None" stehen.
http://stackoverflow.com/questions/3282656/setting-inheritance-and-prop ...
Die Liste der SIDs findest du hier: https://support.microsoft.com/en-us/kb/243330/de
sowie ""None","Allow"" in diesem Fall?
Das sind die Propagation Flags und der AccessType und bestimmen wie vererbt wirdhttps://msdn.microsoft.com/de-de/library/ms147899%28v=vs.110%29.aspx
In diesem Fall wollen wir ja an alles vererben, deshalb muss das auf "None" stehen.
http://stackoverflow.com/questions/3282656/setting-inheritance-and-prop ...

Du schreibst deine Pfade in ein Array, in iterierst dann einfach über dieses Array, ganz einfach wie in jeder Programmiersprache:
Und das mit 32/64Bit hat mit dem Registry Redirector zu tun wie beim Ordner System32 und Syswow64 unter c:\windows.
Das verhält sich genauso in der Registry mit dem Software-Knoten wenn man mit 32-Bit dort reinschreibt landen die Zugriffe im Wow6432node Ordner.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724072(v=vs.8 ...
$keys = @(
'HKLM:\software\key1',
'HKLM:\software\key2',
'HKLM:\software\key3'
)
$keys | %{
$acl = Get-ACL $_
# Administrators FullControl
$rule = new-object System.Security.AccessControl.RegistryAccessRule((new-object System.Security.Principal.SecurityIdentifier('S-1-5-32-544')),"FullControl","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($rule)
# Creator FullControl
$rule = new-object System.Security.AccessControl.RegistryAccessRule((new-object System.Security.Principal.SecurityIdentifier('S-1-3-0')),"FullControl","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($rule)
# World FullControl
$rule = new-object System.Security.AccessControl.RegistryAccessRule((new-object System.Security.Principal.SecurityIdentifier('S-1-1-0')),"FullControl","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($rule)
# System FullControl
$rule = new-object System.Security.AccessControl.RegistryAccessRule((new-object System.Security.Principal.SecurityIdentifier('S-1-5-18')),"FullControl","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($rule)
Set-ACL $_ $acl
}
Und das mit 32/64Bit hat mit dem Registry Redirector zu tun wie beim Ordner System32 und Syswow64 unter c:\windows.
Das verhält sich genauso in der Registry mit dem Software-Knoten wenn man mit 32-Bit dort reinschreibt landen die Zugriffe im Wow6432node Ordner.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724072(v=vs.8 ...