VBScript - Benutzung der WMI-Klasse StdRegProv als SYSTEM-Benutzer schlägt fehl
Hallo zusammen !
Ich möchte ein VBScript erstellen, das als Gruppenrichtlinien-Shutdown-Script Verwendung finden wird.
In diesem Script greife ich über die WMI-Klasse StdRegProv auf die Registrierung zu. Als "natürlicher" Benutzer mit administrativen Rechten läuft meine Routine auch problemlos durch. Wenn ich das Script allerdings als Shutdown-Script ausprobiere, schlägt der Zugriff auf die Registrierung fehl.
Testweise habe ich das Script auch schonmal als geplanten Task unter den Anmeldeeinstellungen des SYSTEM-Benutzers ausführen lassen: Das selbe Problem.
Es scheint also am SYSTEM-Benutzer zu liegen.
Auszug aus dem Code:
Leider kann ich nicht auf die RegRead-Funktion eines Wscript.Shell-Objektes zurückgreifen, da ich im späteren Verlauf des Scripts bspw. noch eine Liste von Unterschlüsseln eines Registry-Schlüssels abfragen möchte. Das geht imho nur mit der obigen Variante.
Hat jemand von euch eine Ahnung, wo das Problem liegen könnte ? Kann der SYSTEM-Benutzer etwa keine WMI-Funktionalitäten ausführen ? Oder habe ich irgendwo einen Fehler im Ansatz ?
Vielen Dank im Voraus für eure Mühen!
Gruß, Eicky
P.S.: Bein leider kein VBScript / WMI-Crack, habe trotzdem versucht, mein Problem verständlich auszudrücken
Ich möchte ein VBScript erstellen, das als Gruppenrichtlinien-Shutdown-Script Verwendung finden wird.
In diesem Script greife ich über die WMI-Klasse StdRegProv auf die Registrierung zu. Als "natürlicher" Benutzer mit administrativen Rechten läuft meine Routine auch problemlos durch. Wenn ich das Script allerdings als Shutdown-Script ausprobiere, schlägt der Zugriff auf die Registrierung fehl.
Testweise habe ich das Script auch schonmal als geplanten Task unter den Anmeldeeinstellungen des SYSTEM-Benutzers ausführen lassen: Das selbe Problem.
Es scheint also am SYSTEM-Benutzer zu liegen.
Auszug aus dem Code:
const HKEY_LOCAL_MACHINE = &H80000002
intRunInterval = 30
strLastMaintenanceKeyPath = "SOFTWARE\IT-Abteilung"
strLastMaintenanceValueName = "LastMaintenance"
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
maintenanceDue = True
objReg.GetDWORDValue HKEY_LOCAL_MACHINE, strLastMaintenanceKeyPath, strLastMaintenanceValueName, intLastMaintenance
'Bei der Ausführung im SYSTEM-Kontext löst die obige Funktion den Err.Code 2 aus. Leider sagt mir das nicht viel...
If IsNumeric(intLastMaintenance) Then
if (Date() - intLastMaintenance) <= intRunInterval Then
maintenanceDue = False
End If
End If
[...]
Leider kann ich nicht auf die RegRead-Funktion eines Wscript.Shell-Objektes zurückgreifen, da ich im späteren Verlauf des Scripts bspw. noch eine Liste von Unterschlüsseln eines Registry-Schlüssels abfragen möchte. Das geht imho nur mit der obigen Variante.
Hat jemand von euch eine Ahnung, wo das Problem liegen könnte ? Kann der SYSTEM-Benutzer etwa keine WMI-Funktionalitäten ausführen ? Oder habe ich irgendwo einen Fehler im Ansatz ?
Vielen Dank im Voraus für eure Mühen!
Gruß, Eicky
P.S.: Bein leider kein VBScript / WMI-Crack, habe trotzdem versucht, mein Problem verständlich auszudrücken
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 103402
Url: https://administrator.de/contentid/103402
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
1 Kommentar