尝试通过WMI获取CPU ID时生成“未找到”异常

时间:2010-12-26 12:06:45

标签: c# wmi serial-number hdd cpuid

我正在使用此代码来获取处理器ID:

    public static string getProcessorId()
    {
        var mc = new ManagementClass("Win32_Processor");
        var moc = mc.GetInstances();

        foreach (var mo in moc)
        {
            return mo.Properties["ProcessorId"].Value.ToString();
        }

        return "Unknown";
    }

我正在运行Windows 7 32位Visual Studio 2008。 不幸的是,mc.GetInstances()方法调用引发了“未找到”异常。

这是类似的代码(获取硬盘序列):

    public static string getVolumeSerialNumber()
    {
        var disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");
        disk.Get();
        return disk["VolumeSerialNumber"].ToString();
    }

此代码也失败 - “disk.Get()”方法引发“无效类”异常。

我在关闭UAC时运行此代码&开 - 没什么帮助。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您的WMI安装似乎有些破碎,我已经在启用了UAC的Windows 7上测试了您的getProcessorId代码,并且它运行正常。 “Win32_Processor”是一个非常标准的类,应该在那里。

以下是帮助诊断WMI问题的链接:How to check the WMI repository before rebuilding it