win32_processor内存不足

时间:2013-06-24 10:01:24

标签: c# .net windows wmi out-of-memory

我想在.NET中使用WMI获取id处理器但是当我使用ManagementObjectSearcher中的get()方法时,我遇到内存不足异常......

如果您想查看代码,请参阅以下内容:

   ManagementObjectSearcher searcher = new ManagementObjectSearcher(
                "select * from Win32_Processor");

            foreach (ManagementObject share in searcher.Get())
                foreach (PropertyData PC in share.Properties)
                    if (PC.Name.Equals("ProcessorId"))
                        return (string)PC.Value;

            return null;

此代码适用于其他计算机,但不适用于我的...

我正在使用Windows 7.

有什么问题?

我尝试重新启动WMI服务并且无法解决我的问题:(

1 个答案:

答案 0 :(得分:2)

有几个原因可能导致内存不足异常。

  1. WMI中可能的内存泄漏,来源: http://brooke.blogs.sqlsentry.net/2010/02/win32service-memory-leak.html
  2. 检查您是否有权限,这可以解释为什么您的代码在某些计算机上运行,​​为什么不在您的计算机上运行。
  3. 以管理员身份运行代码(用于以管理员身份调试启动VS)
  4. 这是另一个代码段,也可以试试这个......谁知道
  5. 样品:

    public static String GetCPUId()
    {
        String processorID = "";
    
        ManagementObjectSearcher searcher = new ManagementObjectSearcher(
            "Select * FROM WIN32_Processor");
    
        ManagementObjectCollection mObject = searcher.Get();
    
        foreach (ManagementObject obj in mObject)
        {
            processorID = obj["ProcessorId"].ToString();
        }
    
        return processorID;
    }
    

    来源:WIN32_Processor::Is ProcessorId Unique for all computers