2011-06-08 109 views
9

我使用以下c#代码来获取处理器信息。如果我在虚拟机上运行我的应用程序,Management类为null。我使用的Oracle VM VirtualBox作为我的虚拟PC(Windows XP中SP3)虚拟机上的CPU标识

System.Management.ManagementClass Management = new System.Management.ManagementClass("Win32_Processor"); 

有没有人有关于使用这种代码的经验,在虚拟机的问题。

+0

那是不可能的,*新*运算符从不返回null。你的问题也必须是虚拟的。 – 2011-06-10 07:08:57

+0

是的汉斯,你是对的。 ManagementClass实例不为null。管理[“ProcessorId”]为空。 – Demir 2011-06-15 14:36:22

回答

1

你使用的是GetInstances吗?

 
System.Management.ManagementClass ManagementClass1 = new System.Management.ManagementClass("Win32_Processor"); 

System.Management.ManagementObjectCollection ManagementObjectCollection1 = ManagementClass1.GetInstances(); 

foreach (System.Management.ManagementObject managementobject in ManagementObjectCollection1) { 
    Console.Out.WriteLine(managementobject.Properties["Name"].Value); 
} 

Console.In.ReadLine(); 
+0

是@VSU,我使用的是GetInstances()方法。似乎VirtualBox不支持所有的WMI进程。 – Demir 2011-06-10 06:26:04

+0

从Microsoft.com下载BgInfo并查看它是否可以获取正确的CPU信息。如果它不能,那么VirtualBox会隐藏它,并且代码中没有错误。 – BZ1 2011-06-10 06:38:07

+0

同时确保你有最新版本的VBox并安装Guest Additions。我已经看到VBox确实隐藏了一些细节。这并不罕见,可能是通过设计。 – BZ1 2011-06-10 06:52:22