Как определить, доступна ли аппаратная виртуализация через код? (C #, C ++) - PullRequest
4 голосов
/ 08 мая 2009

Как я могу определить, поддерживает ли система аппаратную виртуализацию с помощью кода? (Желательно на C # или C ++).

Я попытался использовать WMI и ManagementObjectSearcher и не смог найти свойство, которое, по-видимому, представляло бы, присутствует ли поддержка виртуализации на машине.

Бонусный вопрос: Можно ли определить, поддерживает ли ЦП виртуализацию HW, но отключен в BIOS?

Ответы [ 5 ]

4 голосов
/ 06 августа 2014

У меня нет ответа C-ish, но вот подход PowerShell - это просто простой запрос WMI - который может помочь.

Запрос Win32_Processor; есть флаги «SecondLevelAddressTranslationExtensions» и «VirtualizationFirmwareEnabled». Кажется, они отвечают на вопросы для меня.

В PoSH это

(GWMI Win32_Processor). Виртуализация прошивкиEnabled

и

(GWMI Win32_Processor) .SecondLevelAddressTranslationExtensions

Надеюсь, это поможет.

Марк Минаси

2 голосов
/ 03 июля 2009

Я думаю, что оригинальный постер спрашивает, как определить, что компьютерное оборудование поддерживает виртуализацию, а не то, что оно работает внутри виртуальной машины. См. этот вопрос для возможного ответа.

Также, возможно, стоит посмотреть, сможете ли вы проверить флаги ЦП, поскольку там будет либо флаг Intel vmx, либо флаг AMD svm, если процессор поддерживает расширения виртуализации. Я не могу сказать, что знаю, как это должно быть сделано под Windows, но информация доступна в /proc/cpuinfo в Linux.

0 голосов
/ 19 июля 2014

Отметьте эту ссылку , как вы можете видеть, возможно, вам следует использовать классы WMI для получения информации. .NET Framework имеет пространство имен System.Management для этого. Класс Win32_processor может дать вам всю необходимую информацию о процессоре, потому что вы не можете получить доступ к флагам процессора напрямую с помощью класса win32_processor, возможно, вам нужно проверить значение VirtualizationFirmwareEnabled

0 голосов
0 голосов
/ 08 мая 2009

Не уверен в коде, но Securable , кажется, может сделать это.

...