Ist es beim Booten der VHD-Installation möglich, den Dateinamen der VHD abzurufen?

674
Grumbles

Ich habe einen physischen Computer, von dem ich zwei BCD-Einträge für VHDs zum Booten habe. Ich suche nach einem Weg, um programmgesteuert den Namen der aktuellen VHD zu erhalten, zu der gebootet wurde. Ich sehe mögliche Lösungen, wenn ich Hyper-V verwende, aber ich starte in diesem Szenario auf einem physischen Computer. Ich habe dasselbe Verhalten bei Windows 7 und Windows 8.1 festgestellt

Die Ausgabe von BCDEDIT und WMI (BCDSTORE-Klasse) zeigt nicht den Dateinamen der gebooteten VHD (der zweite Eintrag ist für die zweite VHD, der dritte Eintrag für den aktuellen Startvorgang):

Windows Boot Manager -------------------- identifier  device partition=D: description Windows Boot Manager locale en-us inherit  default  resumeobject  displayorder    toolsdisplayorder  timeout 30  Windows Boot Loader ------------------- identifier  device vhd=[D:]\VHD\v2.vhd path \Windows\system32\winload.exe description Windows Embedded Standard locale en-us inherit  osdevice vhd=[D:]\VHD\v2.vhd systemroot \Windows resumeobject  nx OptIn detecthal Yes  Windows Boot Loader ------------------- identifier  device partition=C: path \Windows\system32\winload.exe description Windows locale en-US inherit  osdevice partition=C: systemroot \Windows resumeobject  nx OptIn bootstatuspolicy IgnoreAllFailures 

Ich weiß, dass ich den Dateinamen in der Beschreibung angeben könnte, aber für die endgültige Anwendung muss ich sie verwenden, um sie für den Endbenutzer zu kennzeichnen.

0
Unterscheiden sich die VHDs stark oder nur ein paar kleinere Änderungen? Canadian Luke vor 10 Jahren 0
One is highly customized, and one isn't. I simplified my use case quite a bit, but it is a requirement for this project to be able to boot to the second VHD and "fix" things. Grumbles vor 10 Jahren 0

1 Antwort auf die Frage

1
user273904

bcdedit / v liefert den vollständigen Pfad für die aktuell gebootete VHD.

Dies funktioniert nicht für mich, es zeigt mir nur die BCD-Informationen - `/ v Befehlszeilenoption, die Eintrags-IDs vollständig anzeigt, statt Namen für bekannte IDs zu verwenden. Verwenden Sie / v als Befehl, um die Eintrags-IDs für den Typ ACTIVE vollständig anzuzeigen .` Canadian Luke vor 10 Jahren 0
bcdedit /v does show me the information I'm looking for, but not which entry was booted from. I can get that information from a plain "bcdedit", however and match the "resumeobject" GUID. Still looking for a way to do it in PowerShell or C#, but I'll parse the text output if needed. Grumbles vor 10 Jahren 0
Ich kann es nicht in PowerShell herausfinden, ich denke, / V veranlasst es, die Geschäftsdatei zu analysieren und Informationen zu sammeln, die nicht in WMI sind. Grumbles vor 10 Jahren 0