我正在测试Windows 8消费者预览中的现有应用程序,它在启动时崩溃。日志文件表明它是在我对CPU ID和网卡详细信息进行一些验证的方法中。
要做到这一点,我正在打电话
ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if (cpuInfo.Length == 0)
{
// only return cpuInfo from first CPU
cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
}
}
(请注意,此应用程序在Windows 7及更早版本上运行正常。)
然后我使用相同的语法挂钩到Win32_NetworkAdapterConfiguration并获取IPEnabled,IPAddress []和MACAddress属性。
但是在这里的某个地方它崩溃了。
我已经尝试过对此进行研究,并发现以下Windows 8 server list of WMI classes and methods和我正在使用的那些不在其中。但是,同一个网站也有一个Windows 7 WMI classes and methods列表,这些也不在其中! (即使它在Windows 7上运行没问题)。
所以从外观来看,它不受支持。
ManagementClass的MSDN表示方法is still present in .NET 4.5。此外,this Microsoft resource使用我需要的方法明确列出Win32_Processor和Win32_NetworkAdapterConfiguration。
所以,从链接中,你可以看到我试图研究这个,所以这是我试图解开这个谜团的最后一站。
我的应用程序最初是在Visual Studio 2005中创建的.NET 2.0解决方案。我已将Visual Studio 2011 Beta安装到我的Windows 8 Consumer Preview VM以及最新的SQL 2012 Express中。我已经尝试将我的项目导入到这个Visual Studio中,但它没有加载它,告诉我它只支持Metro开发。因此,我无法在机器本身上调试此问题。
所以我的问题是Windows 8中是否存在这些类?如果他们这样做,那么我做错了什么?如果他们不这样做,那么我需要找到一种方法来获取这些信息 - 但我想这是一个单独的问题; - )
答案 0 :(得分:5)
我可以确认哪些WMI类(Win32_Processor和Win32_NetworkAdapterConfiguration)存在并在Windows 8 Developer Preview中工作。
仅供参考您的参赛作品名称为Windows 8 Server WMI Classes with Methods
的列表,即WMI Classes which had methods.
的工具
答案 1 :(得分:2)
这已经得到了回答,但遗憾的是,只有在我的原始帖子的评论中,Alex K.使用http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8572我能够确定这些方法确实存在,所以我认为这是一个编码问题,因为我的代码略有不同该实用程序生成的内容。
答案 2 :(得分:0)
WMI方法在Windows 8中可用,但在Windows 8.1中已被删除,因此,您可以使用此代码分析Windows 8.1和Windows Phone 8上的各种网络指标:
https://code.msdn.microsoft.com/windowsapps/network-information-sample-63aaa201