Mik*_*ike 7 c# wmi winapi windows-8 visual-studio-2012
我正在测试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();
}
}
Run Code Online (Sandbox Code Playgroud)
(请注意,此应用程序在Windows 7及更早版本上运行正常).
然后,我使用相同的语法挂钩到Win32_NetworkAdapterConfiguration并获取IPEnabled,IPAddress []和MACAddress属性.
但在这里的某个地方它崩溃了.
我已经尝试过对此进行研究,并发现以下Windows 8服务器列表中的WMI类和方法以及我正在使用的那些不在其中.但是,同一站点也有一个Windows 7 WMI类和方法列表,这些也不在其中!(即使它在Windows 7上运行没问题).
所以从外观上看,它不受支持.
ManagementClass的MSDN表明该方法仍然存在于.NET 4.5中.此外,此Microsoft资源使用我需要的方法明确列出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中是否存在这些类?如果他们这样做,那么我做错了什么?如果他们不这样做,那么我需要找到一种方法来获取这些信息 - 但我想这是一个单独的问题;-)
我可以确认哪个WMI类(Win32_Processor和Win32_NetworkAdapterConfiguration)存在并在Windows 8 Developer Preview中工作.
仅供你参考,你的参赛者有这个名字Windows 8 Server WMI Classes with Methods,这意味着WMI Classes which had methods.


用来检查的工具 WMI Delphi Code Creator
这个问题已经得到了回答,但不幸的是,仅在 Alex K 对我的原始帖子的评论中得到了回答。使用http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8572我能够识别这些方法存在,所以我认为这是一个编码问题,因为我的代码与该实用程序生成的代码略有不同。