Получить Volume Guid раздела EFI в Windows 2012 R2
Я пытаюсь извлечь VolumeGuid из раздела EFI. Мне удалось сделать это успешно на компьютере с Windows 10, используя запрос WMI и код через C# ManagementObjectSearcher. Я создал VHD с типом раздела GPT внутри него, я создал следующее: раздел восстановления, системный раздел EFI и базовый раздел данных. Ниже приведен запрос WMI, который я выполняю в PowerShell после подключения VHD. Я не могу извлечь то же самое на машине с Windows 2012 R2. Руководство тома остальной части разделов, которое я могу извлечь на машине Windows 2012 R2.
Пример сценария DiskPart
CREATE PARTITION PRIMARY SIZE=450 OFFSET=1024 ID=de94bba4-06d1-4d40-a16a-bfd50179d6ac
FORMAT FS=NTFS LABEL="Recovery" UNIT=4096 QUICK
CREATE PARTITION PRIMARY SIZE=99 OFFSET=461824 ID=c12a7328-f81f-11d2-ba4b-00a0c93ec93b
FORMAT FS=FAT32 LABEL="" UNIT=512 QUICK
CREATE PARTITION PRIMARY SIZE=129481 OFFSET=579584 ID=ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
FORMAT FS=NTFS LABEL="" UNIT=4096 QUICK
Запрос WMI
"Get-WmiObject -Query "SELECT * FROM Msft_Volume" -Namespace Root/Microsoft/Windows/Storage"
В PowerShell в Windows 10 я вижу раздел EFI, как показано ниже.
__GENUS : 2
__CLASS : MSFT_Volume
__SUPERCLASS : MSFT_StorageObject
__DYNASTY : MSFT_StorageObject
__RELPATH : MSFT_Volume.ObjectId="{1}\\\\computer\\root/Microsoft/Windows/Storage/Providers_v2\\WSP_Volume
.ObjectId=\"{efe10384-2fc4-11e9-bb16-806e6f6e6963}:VO:\\\\?\\Volume{f2f37b30-47b8-4553-804d-9b14
f6b32e1b}\\\""
__PROPERTY_COUNT : 18
__DERIVATION : {MSFT_StorageObject}
__SERVER : computer
__NAMESPACE : Root\Microsoft\Windows\Storage
__PATH : \\computer\Root\Microsoft\Windows\Storage:MSFT_Volume.ObjectId="{1}\\\\computer\\root/Micros
oft/Windows/Storage/Providers_v2\\WSP_Volume.ObjectId=\"{efe10384-2fc4-11e9-bb16-806e6f6e6963}:V
O:\\\\?\\Volume{f2f37b30-47b8-4553-804d-9b14f6b32e1b}\\\""
AllocationUnitSize : 512
DedupMode : 4
DriveLetter :
DriveType : 3
FileSystem : FAT32
FileSystemLabel :
FileSystemType : 6
HealthStatus : 0
ObjectId : {1}\\computer\root/Microsoft/Windows/Storage/Providers_v2\WSP_Volume.ObjectId="{efe10384-2fc4-
11e9-bb16-806e6f6e6963}:VO:\\?\Volume{f2f37b30-47b8-4553-804d-9b14f6b32e1b}\"
OperationalStatus : {2}
PassThroughClass :
PassThroughIds :
PassThroughNamespace :
PassThroughServer :
Path : \\?\Volume{f2f37b30-47b8-4553-804d-9b14f6b32e1b}\
Size : 99614720
SizeRemaining : 99613696
UniqueId : **\\?\Volume{f2f37b30-47b8-4553-804d-9b14f6b32e1b}\**
PSComputerName : computer
Однако приведенный выше запрос WMI не возвращает сведения о разделе EFI при работе на "Windows 2012 R2". Даже тот же запрос, запущенный с использованием кода C#, не работает.
- Есть ли какие-либо ограничения в Windows 2012 R2, которые не позволяют отображать сведения о разделе EFI?
- Есть ли другой способ извлечь гид тома раздела EFI?
- В настоящее время мне пришлось назначить букву диска разделу EFI, чтобы прочитать его, я бы предпочел использовать синтаксис \?\Volume{guid}, чтобы открыть диск и прочитать его программно, поскольку это позволит избежать излишнего назначения буквы диска.
Пожалуйста, предложите.