首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

:在用C#获取内存信息时出错

2012-01-06 
高手请进:在用C#获取内存信息时出错//获取总内存ManagementObjectCollectionMOCMCP.getQueryResult( sel

高手请进:在用C#获取内存信息时出错
//获取总内存
                ManagementObjectCollection   MOC   =   MCP.getQueryResult( "select   *   from   Win32_LogicalMemoryConfiguration ");
                int   TotalPhysicalMemory   =   0;
                foreach   (ManagementObject   tmpMO   in   MOC)
                {
                        string   tmpStr   =   tmpMO.GetPropertyValue( "TotalPhysicalMemory ").ToString();
                        TotalPhysicalMemory   =   int.Parse(tmpStr);
                }

                //获取可用内存
                MOC   =   MCP.getQueryResult( "select   *   from   Win32_PerfRawData_PerfOS_Memory ");
                int   AvailableKBytes   =   0;
                foreach   (ManagementObject   tmpMO1   in   MOC)
                {
                        string   tmpStr   =   tmpMO1.GetPropertyValue( "AvailableKBytes ").ToString();
                        AvailableKBytes   =   int.Parse(tmpStr);
                }


在执行 "获取总内存 "的操作时程序正常运行,但在执行 "获取可用内存 "操作时就出现了“访问遭到拒绝”的错误,页面显示的错误如下:

访问遭到拒绝  
说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。  

异常详细信息:   System.Management.ManagementException:   访问遭到拒绝  

源错误:  


行   137:                 MOC   =   MCP.getQueryResult( "select   *   from   Win32_PerfRawData_PerfOS_Memory ");
行   138:                 int   AvailableKBytes   =   0;
行   139:                 foreach   (ManagementObject   tmpMO1   in   MOC)
行   140:                 {
行   141:                         string   tmpStr   =   tmpMO1.GetPropertyValue( "AvailableKBytes ").ToString();
 

在系统日志里记录的错误为:
事件类型:警告
事件来源:ASP.NET   2.0.50727.0
事件种类:Web   事件  
事件   ID:1309
日期:2007-9-8
事件:16:34:16
用户:N/A
计算机:Computer
描述:
事件代码:   3005  
事件消息:   发生了未处理的异常。  
事件时间:   2007-9-8   16:34:15  
事件时间(UTC):   2007-9-8   8:34:15  
事件   ID:   6f99ffb00143428d9116fe51f9ad18c0  
事件序列:   4  
事件匹配项:   1  
事件详细信息代码:   0  
 
应用程序信息:  
        应用程序域:   /LM/W3SVC/1027221828/Root-1-128337140500000000  
        信任级别:   Full  
        应用程序虚拟路径:   /  


        应用程序路径:   D:\Work\web\  
        计算机名:   Computer  
 
进程信息:  
        进程   ID:   3944  
        进程名:   aspnet_wp.exe  
        帐户名:   Computer\ASPNET  
 
异常信息:  
        异常类型:   ManagementException  
        异常消息:   访问遭到拒绝    
 
请求信息:  
        请求   URL:   http://www.web.com/ManagementConnectPool.aspx?s=192.168.0.2&u=abc&p=abcd  
        请求路径:   /ManagementConnectPool.aspx  
        用户主机地址:   127.0.0.1  
        用户:    
        是否已经过身份验证:   False  
        身份验证类型:    
        线程帐户名:   Computer\ASPNET  
 
线程信息:  
        线程   ID:   1  
        线程帐户名:   Computer\ASPNET  
        是否正在模拟:   False  
        堆栈跟踪:         在   System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus   errorCode)
      在   System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
      在   Monitor.getMemoryUsage()   位置   D:\Work\web\ManagementConnectPool.aspx.cs:行号   139
      在   ManagementConnectPool.Page_Load(Object   sender,   EventArgs   e)   位置   D:\Work\web\ManagementConnectPool.aspx.cs:行号   64
      在   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr   fp,   Object   o,   Object   t,   EventArgs   e)
      在   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object   sender,   EventArgs   e)
      在   System.Web.UI.Control.OnLoad(EventArgs   e)
      在   System.Web.UI.Control.LoadRecursive()
      在   System.Web.UI.Page.ProcessRequestMain(Boolean   includeStagesBeforeAsyncPoint,   Boolean   includeStagesAfterAsyncPoint)
 
 
自定义事件详细信息:  

有关更多信息,请参阅在   http://go.microsoft.com/fwlink/events.asp   的帮助和支持中心。


用户abc是属于Administrators组的,总内存是可以正常获取到的,就是在获取可用内存信息时才出错的,单独获取用可内存信息时也出现同样的错误。

那位高手帮忙看一下,先谢了。



[解决办法]
.............执行权限不够,必须通过API获得系统最高管理权限才可以操作
[解决办法]
你看看你的ASPNET用户的权限吧~~~~代码应该没问题

热点排行