4

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

我尝试使用 WMI 和 ManagementObjectSearcher,但找不到似乎表示机器中是否存在虚拟化支持的属性。

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

4

5 回答 5

6

我没有 C 风格的答案,但这里有一个 PowerShell 方法——它只是一个简单的 WMI 查询——可以提供帮助。

查询 Win32_Processor;有标志“SecondLevelAddressTranslationExtensions”和“VirtualizationFirmwareEnabled”。他们似乎为我回答了这些问题。

在 PoSH 中,它是

(GWMI Win32_Processor).VirtualizationFirmwareEnabled

(GWMI Win32_Processor).SecondLevelAddressTranslationExtensions

我希望这有帮助。

马克·米纳西

于 2014-08-06T13:12:38.747 回答
2

我认为原始发帖人是在询问如何检测计算机硬件是否支持虚拟化,而不是在虚拟机中运行。请参阅此问题以获取可能的答案。

此外,您是否可以检查 CPU 标志可能值得一看,因为如果处理器支持虚拟化扩展,则会有 Intelvmx标志或 AMD标志。svm我不能说我知道这应该如何在 Windows 下完成,但这些信息/proc/cpuinfo在 Linux 上是可用的。

于 2009-07-03T10:33:16.157 回答
0

不确定代码,但Securable似乎能够做到这一点。

于 2009-05-08T17:29:47.197 回答
0

检查此链接,如您所见,也许您应该使用 WMI 类来获取信息。.NET 框架有 System.Management 命名空间来做到这一点。Win32_processor 类可以为您提供有关处理器所需的所有信息,因为您无法使用 win32_processor 类直接访问 cpu 标志,也许您需要检查 VirtualizationFirmwareEnabled 的值

于 2014-07-19T16:58:29.387 回答
-2

检查StackOverFlow:如何识别您在 VM 下运行

于 2009-06-19T20:47:30.087 回答