Welche Windows-Version ist in einer VHD installiert?

    VHD und VDHX mit Hyper-VWenn man wissen möchte, welches Windows in einer ausge­schalteten VM installiert ist, dann muss man sie dafür nicht extra hoch­fahren. Es ist statt­dessen möglich, das virtuelle System­laufwerk zu mounten und diese Informa­tionen von dort auszu­lesen.

    Sobald Windows auf einem PC oder in einer VM hochgefahren ist, fällt es relativ leicht, die Produkt­informationen abzurufen. Über WMI erhält man diese Angaben ziemlich einfach, etwa durch den Aufruf von

    wmic /node:"<Remote-PC>" OS get Name, Version

    VM-Namen meist nicht ausreichend

    Anders sieht es dagegen bei ausgeschalteten VMs aus. Zwar werden die meisten Admins eine Namens­konvention wählen, die Aufschluss über das installierte Betriebs­system gibt. In der Regel wird daraus aber nicht hervorgehen, um welche Edition es sich handelt bzw. ob eine 32- oder 64-Ausführung vorliegt.

    Aufgrund der seit Windows 8 verfügbaren Cmdlets zur Bearbeitung von VHDs liegt es nahe, für diesen Zweck auf PowerShell zu setzen. Dagegen spricht aber, dass Mount-VHD der virtuellen Festplatte pro Partition beliebige Laufwerks­buchstaben zuordnet und diese auch noch automatisch im Explorer öffnet. Außerdem gibt es dort keine Mittel, eine Registry offline zu mounten.

    Batch mit DISM und reg.exe

    Die folgende Lösung verwendet daher eine Batch-Datei, die herkömmliche Tools für die Kommandozeile wie DISM und reg.exe aufruft. Ersteres unterstützt seit geraumer Zeit auch das Offline-Servicing von VHD(X)-Dateien.

    Nach dem Mounten der VHD prüft die Batch-Datei, ob das Verzeichnis "Program Files (x86)" existiert. Dies ist ein sicherer Indikator dafür, dass es sich um eine 64-Bit-Version handelt. Anschließend liest sie mit reg.exe die Registry das Offline-Windows ein, und zwar den Zweig Software.

    Dort findet sich unter Microsoft\Windows NT\CurrentVersion der Schlüssel ProductName, der die Edition und Version des Betriebs­systems ausgibt.

    Keine Kommentare