2

我正在使用此代码来获取处理器 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 的情况下运行此代码 - 没有任何帮助。

我究竟做错了什么?

4

1 回答 1

2

您的 WMI 安装似乎有些损坏,我已经在启用了 UAC 的 Windows 7 上测试了您的 getProcessorId 代码,它工作正常。“Win32_Processor”是一个真正应该存在的标准类。

这是帮助诊断 WMI 问题的链接:如何在重建 WMI 存储库之前检查它

于 2010-12-26T13:58:18.810 回答