是否可以使用C#检查是否启用了硬件虚拟化?
找不到答案,所以我想我要求自己。
使用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(); }
如果你枚举Win32_Processor类中的所有属性,你会看到一个名为“ VirtualizationFirmwareEnabled ”的属性,我想你正在谈论这个属性。
正如您在此链接中所看到的,要检查某些机器处理器是否可以在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();
仅仅是一个FYI,“root / virtualization”命名空间不再存在,从Windows / Hyper-V Server 2012 R2开始(也可能是Windows 8.1)。 另外,可能是因为你写了“root \ virtualization”(尝试正斜杠)。 无论如何你应该使用“root / virtualization / v2”。