【问题标题】:Is it possible using C# to check if hardware virtualization enabled?是否可以使用 C# 检查是否启用了硬件虚拟化?
【发布时间】:2014-07-19 14:41:24
【问题描述】:

找不到答案,所以我想我自己问问。

使用 C#,如何检查 CPU 是否启用了硬件虚拟化?例如,Hyper-V。它不在Win32_Processor 类中,我连接到MSVM_ComputerSystem 的尝试完全失败了。一直告诉我有一个无效的命名空间。

代码如下。

ManagementObjectSearcher vm = new ManagementObjectSearcher(@"\\.\root\virtualization", "select * from MSVM_Computersystem");
ManagementObjectCollection vmCollection = vm.Get();
foreach (ManagementObject mo in vmCollection)
{
     cpuVirtual = mo["EnabledState"].ToString();
}

【问题讨论】:

    标签: c# namespaces virtualization visual-studio-express


    【解决方案1】:

    如果你枚举 Win32_Processor 类中的所有属性,你会看到一个名为“VirtualizationFirmwareEnabled”的属性,我想你说的是这个属性。

    正如您在this link 中看到的,要检查某些机器处理器是否可以在 Hyper-V 上运行,它们将 VirtualizationFirmwareEnabled" 与其他属性结合使用:

    我编写了这个简单的片段来遍历所有 win32_processor 类值:

    ManagementClass managClass = new ManagementClass("win32_processor");
    ManagementObjectCollection managCollec = managClass.GetInstances();
    
    foreach (ManagementObject managObj in managCollec)
    {
       foreach (var prop in managObj.Properties)
       {
           Console.WriteLine("Property Name: {0} Value: {1}",prop.Name,prop.Value);
       }               
    }
    
    Console.ReadKey();
    

    【讨论】:

    • 我运行了该代码,但在我的控制台中似乎没有一个 VirtualizationFirmwareEnabled 值。将其插入我的 foreach 循环会导致异常 Not found
    • 您使用的是什么处理器?可能不存在属性 VirtualizationFirmwareEnabled 或存在但值为 false 表示不支持虚拟化。当我在 VStudio 2013 中使用 .NET Framework 4.5 运行代码 sn-p 时,我看到了该属性,我的机器具有带有虚拟化支持的 Intel Core i7,实际上我正在使用 OSX 主机运行 Windows Guess。
    • 我正在运行 i5-3570K,Hyper-V 当前已禁用。该命令在 PowerShell 中也显示为负数。
    • 能否在固件 BIOS 或 UEFI 上启用 Hyper-V 并检查代码是否显示属性?
    • 经过研究,我发现了这个code,在这里你会看到我们给你的代码,只适用于Windows 8或更高版本。这就是原因,因为您在 Win32_Processor 类中看不到该属性,如果您查看代码会很有用。
    【解决方案2】:

    仅供参考,“根/虚拟化”命名空间不再存在,从 Windows / Hyper-V Server 2012 R2(也可能是 Windows 8.1)开始。另外,可能是因为您编写了“root\virtualization”(尝试使用正斜杠)。无论如何,您应该使用“root/virtualization/v2”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-26
      • 2020-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 2018-11-02
      相关资源
      最近更新 更多