如何通过代码确定硬件虚拟化是否可用?(C#,C++)

Raj*_*Rao 4 c# windows virtualization windows-7

如何通过代码检测系统是否支持硬件虚拟化?(最好用C#或C++).

我尝试使用WMI和ManagementObjectSearcher,并且找不到似乎代表虚拟机支持是否存在于机器中的属性.

奖金问题:是否可以判断CPU是否支持硬件虚拟化,但在BIOS中是否已禁用?

Mar*_*asi 6

我没有C-ish的答案,但这是一个PowerShell方法 - 它只是一个简单的WMI查询 - 可以提供帮助.

查询Win32_Processor; 有标志"SecondLevelAddressTranslationExtensions"和"VirtualizationFirmwareEnabled".他们似乎回答了我的问题.

在PoSH中,它是

(GWMI Win32_Processor).VirtualizationFirmwareEnabled

(GWMI Win32_Processor).SecondLevelAddressTranslationExtensions

我希望这有帮助.

马克米纳西

  • 这两个命令都为我返回 False,但我启用了 Hyper-V 虚拟化。 (3认同)

DMI*_*DMI 2

我认为最初的发帖者问的是如何检测计算机硬件是否支持虚拟化,而不是它在虚拟机内运行。请参阅此问题以获得可能的答案。

另外,如果您可以检查 CPU 标志,可能值得一看,因为如果处理器支持虚拟化扩展,就会有 Intelvmx标志或 AMD标志。svm我不能说我知道在 Windows 下应该如何完成此操作,但可以在/proc/cpuinfoLinux 上找到该信息。