У меня есть физический компьютер, с которого у меня есть две записи BCD для VHD для загрузки. Я ищу способ программно получить имя текущего виртуального жесткого диска, который был загружен. Я вижу возможные решения при использовании Hyper-V, но в этом сценарии я загружаюсь на физической машине. Я видел такое же поведение, установленное в Windows 7 и Windows 8.1
Выходные данные BCDEDIT и WMI (класс BCDSTORE) не показывают имя файла для загруженного VHD (вторая запись для второго VHD, третья запись для текущей загрузки):
Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=D:
description Windows Boot Manager
locale en-us
inherit {globalsettings}
default {default}
resumeobject {4c6d3c84-4bb6-11e3-bc07-b5a095a1a2a8}
displayorder {default}
{current}
{4c6d3c81-4bb6-11e3-bc07-b5a095a1a2a8}
toolsdisplayorder {memdiag}
timeout 30
Windows Boot Loader
-------------------
identifier {default}
device vhd=[D:]\VHD\v2.vhd
path \Windows\system32\winload.exe
description Windows Embedded Standard
locale en-us
inherit {bootloadersettings}
osdevice vhd=[D:]\VHD\v2.vhd
systemroot \Windows
resumeobject {4c6d3c84-4bb6-11e3-bc07-b5a095a1a2a8}
nx OptIn
detecthal Yes
Windows Boot Loader
-------------------
identifier {current}
device partition=C:
path \Windows\system32\winload.exe
description Windows
locale en-US
inherit {bootloadersettings}
osdevice partition=C:
systemroot \Windows
resumeobject {4c6d3c82-4bb6-11e3-bc07-b5a095a1a2a8}
nx OptIn
bootstatuspolicy IgnoreAllFailures
Я понимаю, что мог бы указать имя файла в описании, но для конечного приложения мне нужно использовать их, чтобы пометить их для конечного пользователя.