我在Windows8消费者预览版中测试了一个现有的应用程序,它在启动时崩溃了。日志文件表明,我使用的方法是对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列表,而且它们也不在其中!(即使它可以在Windows7上运行,也没有问题)。
所以从外观上看,它是不受支持的。
ManagementClass的MSDN指示方法is still present in .NET 4.5。此外,this Microsoft resource确实显式地列出了Win32_Processor和Win32_NetworkAdapterConfiguration,其中包含我需要的方法。
所以,从链接中,你可以看到我已经尝试过研究这个问题,所以这是我试图解开这个谜团的最后一站。
我的应用程序最初是在Visual Studio2005中创建的.NET 2.0解决方案。我已经在我的Windows 8 Consumer Preview VM中安装了Visual Studio 2011 Beta,以及最新的SQL 2012 Express。我尝试将我的项目导入到这个Visual Studio中,但它没有加载它,告诉我它只支持Metro开发。因此,我不能在机器上调试这个问题。
所以我的问题是这些类是否存在于Windows8中?如果他们这样做了,那么我做错了什么?如果他们没有,那么我需要找到一种方法来仍然获得这些信息-但我想这是一个单独的问题;-)
发布于 2017-03-30 05:37:36
WMI方法在Windows 8中可用,但在Windows 8.1中被删除,因此,您也可以使用此代码来分析Windows 8.1和Windows Phone 8上的各种网络指标:
https://code.msdn.microsoft.com/windowsapps/network-information-sample-63aaa201
https://stackoverflow.com/questions/9786485
复制相似问题