使用“ManagementObjectCollection moc = mc.GetInstances();获取CPU ID”不起作用?

时间:2014-04-14 13:34:04

标签: c# wpf

我正在尝试使用此代码获取唯一的CPU ID:

private string getCpuId()
    {
        string cpuInfo = string.Empty;
        ManagementClass mc = new ManagementClass("win32_processor");
        ManagementObjectCollection moc = mc.GetInstances();
        foreach (ManagementObject mo in moc)
        {
            if (cpuInfo == "")
            {
                //Get only the first CPU's ID
                cpuInfo = mo.Properties["processorID"].Value.ToString();
                break;
            }
        }
        return cpuInfo;
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
       MessageBox.Show(getCpuId());
    }

在销售产品的一年内,我和其他600多个不同的系统都很好。唯一的问题是您必须以管理员身份运行应用程序,这没有问题。 问题是在2天前我在Visual Studio 2013中第一次构建应用程序时启动的。

在VS 2013之前,我使用的是VS 2012.现在,如果我以VS 2013的管理员身份运行该应用程序,它将运行,但在ButtonClick事件中,应用程序将停止工作。试图调试,问题是这部分代码,因为VS 2013表明:

ManagementObjectCollection moc = mc.GetInstances();

收到此消息:

OutOfMemoryException was unhandled, an unhandled exception of type 'System.OutOfMemoryException' occurred in System.Management.dll

我搜索了很多,发现了类似的问题和错误,但没有一个像我的。

问题是Visual Studio 2013对我的应用程序做了什么导致它无法运行Visual Studio运行(我的意思是从调试文件夹)?或者是什么导致了这个错误,我怎么能解决这个问题呢?我不想转向VS2012所以任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

问题是Visual Studio安装,重新安装解决了。除了我做了Windows 7更新