Seite 1 von 1

Reg-Pfad für "Running VM List" für versch. Windows

Verfasst: 29.05.2008, 16:18
von smoochy
Hallo,

ich verwende um zu prüfen, ob noch VMs gestartet sind die Einträge von VMWare Server 1.0.5 in der Registry. VMWare Server erstellt in der Registry einen Pfad:
"XYZ\Software\VMware, Inc.\Running VM List". In diesem Pfad sind Schlüssel abgelegt, in denen der .vmx Pfad der laufenden VM steht, zb: "d:\vms\server2003\windows server 2003 enterprise edition.vmx".

Das Problem besteht nun darin, dass der Pfad je nach Windows Version des Hosts unterschiedlich zu sein scheint.

Windows Vista (64bit): "HKEY_CURRENT_USER\Software\VMware, Inc.\Running VM List"
Windows 2000 Server: "HKEY_USERS\S-1-5-18\Software\VMware, Inc.\Running VM List"
Windows XP: "HKEY_CURRENT_USER\Software\VMware, Inc.\Running VM List" (nicht zu 100% sicher)

Kennt jemand eine verlässliche Methode, um zu prüfen, wie der Pfad aussieht? reg query ist leider keine Möglichkeit, da dies zu lange dauert.

Danke im Voraus, smoo

Verfasst: 29.05.2008, 16:25
von franzkat
Die Pfade sind doch gar nicht unterschiedlich. HKEY_CURRENT_USER und HKEY_USERS gibt es auf jeder Windows-Maschine gleichermaßen parallel, wobei HKEY_CURRENT_USER immer der aktuell angemeldete Benutzer ist.

Verfasst: 29.05.2008, 16:35
von smoochy
Wenn ich mich auf der Windows 2000 Maschine einlogge gibt es aber keinen Pfad "HKEY_CURRENT_USER\Software\VMware, Inc.\Running VM List".

Und der Pfad under HKEY_USERS hat immer noch die SID des Users im Pfad, was die nächste Hürde ist.

Ich hab grad eben gesehen, dass unter Vista auch unter "HKEY_USERS\S-1-5-21-545628767-1030822801-607663031-1000\Software\VMware, Inc.\Running VM List" die Keys abgelegt sind. Wie gesagt, die SID im Namen ist das Problem.

Verfasst: 29.05.2008, 17:28
von smoochy
Hallo,

ich konnte das Problem einfach lösen.

Code: Alles auswählen

For $k = 1 To 999
   If RegEnumKey("HKEY_USERS\" & RegEnumKey("HKEY_USERS", $k) & "\Software\VMware, Inc.\", 1) = "Running VM List" Then
   $VmRegPath = "HKEY_USERS\" & RegEnumKey("HKEY_USERS", $k) & "\Software\VMware, Inc.\Running VM List"
   ExitLoop
   EndIf
Next


Die Lösung bezieht sich auf die sehr geniale Scriptsprache "AutoIT".

Danke trotzdem.
Grüße, smoo