虚拟机上的CPU识别

9

我使用以下C#代码获取处理器信息。如果我在虚拟机上运行我的应用程序,管理类将为空。我使用Oracle VM VirtualBox作为我的虚拟PC(Windows XP SP3)。

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

有没有人使用这样的代码并在虚拟机上遇到问题?


这是不可能的,new 操作符从不返回 null。你的问题也一定是虚拟的。 - Hans Passant
是的,汉斯,你说得对。ManagementClass实例不为空。但是Management["ProcessorId"]为空。 - Demir
2个回答

2

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();

是的,@VSU,我正在使用GetInstances()方法。似乎VirtualBox不支持所有WMI进程。 - Demir
从Microsoft.com下载BgInfo并查看它是否可以获取正确的CPU信息。如果无法获取,则VirtualBox正在隐藏它,您的代码没有错误。 - BZ1
请确保您拥有最新版本的VBox并安装了Guest Additions。我看到VBox确实隐藏了一些细节。这并不罕见,很可能是经过设计的。 - BZ1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接