Autor Beitrag
Okular
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mi 30.04.08 16:20 
Hallo Community!

Zunächst ein Riesen-Hallo - schließlich bin ich neu hier. Und habe da auch gleich mal eine sicher nicht ganz einfache Frage. Ich bediene mich der Powershell um ein Script zu stricken, welches auf verschiedenen Remote-Maschinen bestimmte Registry-Keys berechtigungsmäßig verändert. Ich verwende die .NET-Klassen aber hier erstmal mein Ansatz:

$user = "domäne\user";
$RegSec = new system.Security.AccessControl.RegistrySecurity;
$RegRights = [system.Security.AccessControl.RegistryRights]::FullControl;
$Type = [system.Security.AccessControl.AccessControlType]::Allow;
$rule = new system.Security.AccessControl.RegistryAccessRule($user, $RegRights, $Type);
$RegSec.AddAccessRule($rule);

Soweit so gut, die ACL-Objekte sind erstellt - nun kommt folgendes:


$RemoteKey = [microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine", "hostname");
$RemoteAccess = $RemoteKey.OpenSubKey("Software\Key", "writeable");
$RemoteAccess.SetAccesscontrol($RegSec);


Das funktioniert auf meinem eigenen Rechner gut, bloß auf einer Remote-Maschine bricht er nach der letzten Zeile ab mit der Meldung:

Ausnahme beim Aufrufen von "SetAccessControl" mit 1 Argument(en): "Das bereitgestellt Handle ist ungültig. Dies kann passieren, wenn eine Zugriffssteuerungsliste (ACL) für ein anonymes Kernelobjekt festgelegt wird."

Wie gesagt, der lokale Rechner zickt nicht rum. Ich denke mir, dasss die remote angesprochenen Klassen keine .NET-Objekte sind, sondern COM-Klassen.

Hoffentlich weiß jemand von euch einen Rat - ich habe schon alles Mögliche probiert.

Okular