2011-06-08 58 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