eicky2007
Goto Top

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:

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 face-wink

Content-ID: 103402

Url: https://administrator.de/contentid/103402

Ausgedruckt am: 22.11.2024 um 14:11 Uhr

eicky2007
eicky2007 05.12.2008 um 21:04:28 Uhr
Goto Top
Hallo nochmal,

sorry, hab das Fehlschlagen meines Scripts wohl vollkommen falsch "interpretiert". Daher hilft der obige Code-Auszug auch nicht bei der Problemlösung...

Der Unterschied ist (wie ich inzwischen herausgefunden habe) der, dass ein SetDWORDValue-Aufruf unter dem SYSTEM-Konto fehlschlägt, wenn der übergeordnete Key nicht existiert. Unter einem "natürlichen" Administrator hingegen gab's keine Probleme...

Hab dann einfach die Erstellung des Keys vorgeschaltet...

Viele Grüße,

Eicky