如何通过代码检测系统是否支持硬件虚拟化?(最好在 C# 或 C++ 中)。
我尝试使用 WMI 和 ManagementObjectSearcher,但找不到似乎表示机器中是否存在虚拟化支持的属性。
额外问题:是否可以判断 CPU 是否支持硬件虚拟化,但在 BIOS 中禁用?
如何通过代码检测系统是否支持硬件虚拟化?(最好在 C# 或 C++ 中)。
我尝试使用 WMI 和 ManagementObjectSearcher,但找不到似乎表示机器中是否存在虚拟化支持的属性。
额外问题:是否可以判断 CPU 是否支持硬件虚拟化,但在 BIOS 中禁用?
我没有 C 风格的答案,但这里有一个 PowerShell 方法——它只是一个简单的 WMI 查询——可以提供帮助。
查询 Win32_Processor;有标志“SecondLevelAddressTranslationExtensions”和“VirtualizationFirmwareEnabled”。他们似乎为我回答了这些问题。
在 PoSH 中,它是
(GWMI Win32_Processor).VirtualizationFirmwareEnabled
和
(GWMI Win32_Processor).SecondLevelAddressTranslationExtensions
我希望这有帮助。
马克·米纳西
我认为原始发帖人是在询问如何检测计算机硬件是否支持虚拟化,而不是在虚拟机中运行。请参阅此问题以获取可能的答案。
此外,您是否可以检查 CPU 标志可能值得一看,因为如果处理器支持虚拟化扩展,则会有 Intelvmx
标志或 AMD标志。svm
我不能说我知道这应该如何在 Windows 下完成,但这些信息/proc/cpuinfo
在 Linux 上是可用的。
不确定代码,但Securable似乎能够做到这一点。
检查此链接,如您所见,也许您应该使用 WMI 类来获取信息。.NET 框架有 System.Management 命名空间来做到这一点。Win32_processor 类可以为您提供有关处理器所需的所有信息,因为您无法使用 win32_processor 类直接访问 cpu 标志,也许您需要检查 VirtualizationFirmwareEnabled 的值