C# win32_处理器内存不足

C# win32_处理器内存不足,c#,.net,windows,wmi,out-of-memory,C#,.net,Windows,Wmi,Out Of Memory,我想使用WMI在.NET中获取id处理器,但当我使用ManagementObjectSearcher中的get()方法时,我会遇到内存不足异常 如果要查看代码,请参见以下内容: ManagementObjectSearcher searcher = new ManagementObjectSearcher( "select * from Win32_Processor"); foreach (ManagementObject sha

我想使用WMI在.NET中获取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;
此代码在其他计算机上有效,但在我的计算机上无效

我正在使用Windows7

有什么问题


我尝试重新启动WMI服务,但没有解决我的问题:(

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

  • WMI中可能存在内存泄漏,源:
  • 检查您是否有权限,这将解释为什么您的代码在某些计算机上工作,为什么在您的计算机上不工作
  • 以管理员身份运行代码(用于调试start VS以管理员身份启动)
  • 这是另一个代码片段,也试试这个…谁知道呢
  • 样本:

    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;
    }
    

    来源:

    不过,多亏了你,我想用administrator启动它,效果很好:)但在另一台计算机上,我试图用没有管理员角色的用户帐户启动它,它也能工作。。。为什么在我的计算机上,没有管理员权限它就不能工作?请检查您的计算机上是否“打开”了UAC()。我以前遇到过这个问题,这取决于用户权限。为了使WMI的某些部分能够正确地使用用户帐户,您必须进行一些帐户许可。