asp.net
c#
管理员登录站点后,需要查看服务器的CPU,内存等系统资源信息,而且要实时的。有点像任务管理器里面的CPU,内存信息,需要动态的。这样的模块怎么来设计?有没有可以借鉴的,谢谢!

解决方案 »

  1.   

    //读取内存信息  
                int RAMTotal = 0;
                SelectQuery RAMQuery = new SelectQuery("Win32_LogicalMemoryConfiguration");
                ManagementObjectSearcher RAMSearch = new ManagementObjectSearcher(RAMQuery);
                foreach (ManagementObject RAMInfo in RAMSearch.Get())
                {
                    RAMTotal += Convert.ToInt32(RAMInfo["TotalPhysicalMemory"].ToString().Trim()) / 1024;
                }
                txt_RAM.Text = RAMSize(Convert.ToString(RAMTotal));
      

  2.   

            #region 获取CPU频率
            /**************************************************
            * 函数名称:GetCPUFrequency()
            * 功能说明:获取CPU频率
            * 参 数:
            * 使用示列:
            * Response.Write(EC.CpuInfoObject.GetCPUFrequency());
            ************************************************/
            ///
            /// 获取CPU频率
            ///
            /// 整型cpu频率
            public static int GetCPUFrequency()
            {
                RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"HARDWARE\DESCRIPTION\System\CentralProcessor\0");            object obj = rk.GetValue("~MHz");
                int CPUFrequency = (int)obj;            return CPUFrequency;
            }
            #endregion
      

  3.   

    using System;
    using System.Management;
    namespace Soyee.Comm
    {
    /// <summary>
    /// Computer Information
    /// </summary>
    public class Computer
    {
       public string CpuID;
       public string MacAddress;
       public string DiskID;
       public string IpAddress;
       public string LoginUserName;
       public string ComputerName;
       public string SystemType;
       public string TotalPhysicalMemory; //单位:M
         private static Computer _instance;
       public static Computer Instance()
       {
        if (_instance == null)
         _instance = new Computer();
        return _instance;
       }
       public Computer()
       {
        CpuID=GetCpuID();
        MacAddress=GetMacAddress();
        DiskID=GetDiskID();
        IpAddress=GetIPAddress();
        LoginUserName=GetUserName();
        SystemType=GetSystemType();
        TotalPhysicalMemory=GetTotalPhysicalMemory();
        ComputerName=GetComputerName();
       }
       string GetCpuID()
       {
        try
        {
         //获取CPU序列号代码
         string cpuInfo = "";//cpu序列号
         ManagementClass mc = new ManagementClass("Win32_Processor");
         ManagementObjectCollection moc = mc.GetInstances();
         foreach(ManagementObject mo in moc)
         {
          cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
         }
         moc=null;
         mc=null;
         return cpuInfo;
        }
        catch
        {
         return "unknow";
        }
        finally
        {
        }
       
       }
       string GetMacAddress()
       {
        try
        {
         //获取网卡硬件地址
         string mac="";
         ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
         ManagementObjectCollection moc = mc.GetInstances();
         foreach(ManagementObject mo in moc)
         {
          if((bool)mo["IPEnabled"] == true)
          {
           mac=mo["MacAddress"].ToString();
           break;
          }
         }
         moc=null;
         mc=null;
         return mac;
        }
        catch
        {
         return "unknow";
        }
        finally
        {
        }
       
       }
       string GetIPAddress()
       {
        try
        {
         //获取IP地址
         string st="";
         ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
         ManagementObjectCollection moc = mc.GetInstances();
         foreach(ManagementObject mo in moc)
         {
          if((bool)mo["IPEnabled"] == true)
          {
           //st=mo["IpAddress"].ToString();
           System.Array ar;
           ar=(System.Array)(mo.Properties["IpAddress"].Value);
           st=ar.GetValue(0).ToString();
           break;
          }
         }
         moc=null;
         mc=null;
         return st;
        }
        catch
        {
         return "unknow";
        }
        finally
        {
        }
       
       }
       
       string GetDiskID()
       {
        try
        {
         //获取硬盘ID
         String HDid="";
         ManagementClass mc = new ManagementClass("Win32_DiskDrive");
         ManagementObjectCollection moc = mc.GetInstances();
         foreach(ManagementObject mo in moc)
         {
          HDid = (string)mo.Properties["Model"].Value;
         }
         moc=null;
         mc=null;
         return HDid;
        }
        catch
        {
         return "unknow";
        }
        finally
        {
        }
        
       }   /// <summary>
       /// 操作系统的登录用户名
       /// </summary>
       /// <returns></returns>
       string GetUserName()
       {
        try
        {
         string st="";
         ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
         ManagementObjectCollection moc = mc.GetInstances();
         foreach(ManagementObject mo in moc)
         {
         
          st=mo["UserName"].ToString();
         
         }
         moc=null;
         mc=null;
         return st;
        }
        catch
        {
         return "unknow";
        }
        finally
        {
        }
       
       }
       /// <summary>
       /// PC类型
       /// </summary>
       /// <returns></returns>
       string GetSystemType()
       {
        try
        {
         string st="";
         ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
         ManagementObjectCollection moc = mc.GetInstances();
         foreach(ManagementObject mo in moc)
         {
         
          st=mo["SystemType"].ToString();
         
         }
         moc=null;
         mc=null;
         return st;
        }
        catch
        {
         return "unknow";
        }
        finally
        {
        }
       
       }   /// <summary>
       /// 物理内存
       /// </summary>
       /// <returns></returns>
       string GetTotalPhysicalMemory()
       {
        try
        {
        
         string st="";
         ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
         ManagementObjectCollection moc = mc.GetInstances();
         foreach(ManagementObject mo in moc)
         {
         
          st=mo["TotalPhysicalMemory"].ToString();
         
         }
         moc=null;
         mc=null;
         return st;
        }
        catch
        {
         return "unknow";
        }
        finally
        {
        }
       }
       /// <summary>
       /// 
       /// </summary>
       /// <returns></returns>
       string GetComputerName()
       {
        try
        {    
         return System.Environment.GetEnvironmentVariable("ComputerName");
        }
        catch
        {
         return "unknow";
        }
        finally
        {
        }
       }
    }
    }
      

  4.   

    取得CPU 占用率的代码很长。你还是自己慢慢找吧。
    贴不出来的,这个论坛只能贴8000个字符的。
      

  5.   

    考虑一下使用Perfcounter来取得这些值
      

  6.   

    这是我项目使用的系统探针。可以取得服务器多种信息,主要是用导入kernel32.dll实现的<table class="table" cellspacing="1" cellpadding="2" width="99%" align="center" border="0">
            <tr>
                <th class="bg_tr" align="left" colspan="2" height="25">
                    系统信息统计
                 </th>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    服务器名称:<asp:Label ID="servername" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    服务器操作系统:<asp:Label ID="serverms" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    服务器IP地址:<asp:Label ID="serverip" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    服务器域名:
                    <asp:Label ID="server_name" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    服务器IIS版本:<asp:Label ID="serversoft" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    .NET解释引擎版本:<asp:Label ID="servernet" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    HTTPS:<asp:Label ID="serverhttps" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    HTTP访问端口:<asp:Label ID="serverport" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    服务端脚本执行超时:<asp:Label ID="serverout" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    服务器现在时间:<asp:Label ID="servertime" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    AspNet内存占用:<asp:Label ID="aspnetn" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    AspNetCPU时间:<asp:Label ID="aspnetcpu" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    正在使用内存:
                    <asp:Label ID="LbdwMemoryLoad" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    共有物理内存:<asp:Label ID="LbdwTotalPhys" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    剩余物理内存:<asp:Label ID="LbdwAvailPhys" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    交换文件:<asp:Label ID="LbdwTotalPageFile" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    网站Session总数:<asp:Label ID="servers" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    网站Application总数:<asp:Label ID="servera" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    网站目录绝对路径:<asp:Label ID="serverppath" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    执行文件绝对路径:<asp:Label ID="servernpath" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    CPU类型:<asp:Label ID="cputype" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    Access数据库:<asp:Label ID="serveraccess" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    CPU数:<asp:Label ID="cpuc" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    服务器所在时区:<asp:Label ID="serverarea" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    开机运行时长:<asp:Label ID="serverstart" runat="server"></asp:Label>小时
                </td>
                <td class="td_bg" width="50%">
                    进程开始时间:<asp:Label ID="prstart" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    剩余交换文件<asp:Label ID="LbdwAvailPageFile" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    总虚拟内存<asp:Label ID="LbdwTotalVirtual" runat="server"></asp:Label>
                </td>
            </tr>
    </table>
     [DllImport("kernel32")]
        public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);    //定义内存的信息结构
        [StructLayout(LayoutKind.Sequential)]
        public struct MEMORY_INFO
        {
            public uint dwLength;
            public uint dwMemoryLoad;
            public uint dwTotalPhys;
            public uint dwAvailPhys;
            public uint dwTotalPageFile;
            public uint dwAvailPageFile;
            public uint dwTotalVirtual;
            public uint dwAvailVirtual;
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Expires = 0;
            Response.CacheControl = "no-cache";        if (!(IsPostBack))
            {
                TimeSpan stime = DateTime.Now.TimeOfDay;
                servername.Text = Server.MachineName;
                serverms.Text = Environment.OSVersion.ToString();
                serverip.Text = Request.ServerVariables["LOCAL_ADDR"];
                server_name.Text = Request.ServerVariables["http_host"];
                serversoft.Text = Request.ServerVariables["server_software"];
                servernet.Text = Environment.Version.Major + "." + Environment.Version.Minor + "." + Environment.Version.Build + "." + Environment.Version.Revision;
                serverhttps.Text = Request.ServerVariables["HTTPS"];
                serverport.Text = Request.ServerVariables["server_port"];
                serverout.Text = Server.ScriptTimeout.ToString();
                servertime.Text = DateTime.Now.ToString();
                serverarea.Text = (DateTime.Now - DateTime.UtcNow).TotalHours > 0 ? "+" + (DateTime.Now - DateTime.UtcNow).TotalHours.ToString() : (DateTime.Now - DateTime.UtcNow).TotalHours.ToString();
                try
                {
                    aspnetn.Text = (System.Diagnostics.Process.GetCurrentProcess().WorkingSet / 1048576).ToString("N2") + " MB";
                }
                catch
                {
                    aspnetn.Text = "系统拒绝提供。";
                }
                try
                {
                    aspnetcpu.Text = (System.Diagnostics.Process.GetCurrentProcess().TotalProcessorTime).TotalSeconds.ToString("N0") + " 秒";
                }
                catch
                {
                    aspnetcpu.Text = "系统拒绝提供。";
                }
                serverstart.Text = (System.Environment.TickCount / 3600000).ToString("N2");
                try
                {
                    prstart.Text = System.Diagnostics.Process.GetCurrentProcess().StartTime.ToString();
                }
                catch
                {
                    prstart.Text = "系统拒绝提供。";
                }
                cpuc.Text = Environment.GetEnvironmentVariable("NUMBER_OF_PROCESSORS");
                cputype.Text = Environment.GetEnvironmentVariable("PROCESSOR_IDENTIFIER");            //调用GlobalMemoryStatus函数获取内存的相关信息
                MEMORY_INFO MemInfo;
                MemInfo = new MEMORY_INFO();
                GlobalMemoryStatus(ref MemInfo);
                LbdwMemoryLoad.Text = MemInfo.dwMemoryLoad + " %";
                LbdwTotalPhys.Text = dFileSize(MemInfo.dwTotalPhys);
                LbdwAvailPhys.Text = dFileSize(MemInfo.dwAvailPhys);
                LbdwTotalPageFile.Text = dFileSize(MemInfo.dwTotalPageFile);
                LbdwAvailPageFile.Text = dFileSize(MemInfo.dwAvailPageFile);
                LbdwTotalVirtual.Text = dFileSize(MemInfo.dwTotalVirtual);
                serverppath.Text = Request.ServerVariables["APPL_PHYSICAL_PATH"];
                servernpath.Text = Request.ServerVariables["path_translated"];
                servers.Text = Session.Contents.Count.ToString();
                servera.Text = Application.Contents.Count.ToString();
                TimeSpan etime = DateTime.Now.TimeOfDay;
                TimeSpan t = etime.Subtract(stime);
                runtime.Text = t.TotalMilliseconds.ToString();
            }
        }
      

  7.   

    这是我项目使用的系统探针。可以取得服务器多种信息,主要是用导入kernel32.dll实现的<table class="table" cellspacing="1" cellpadding="2" width="99%" align="center" border="0">
            <tr>
                <th class="bg_tr" align="left" colspan="2" height="25">
                    系统信息统计
                 </th>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    服务器名称:<asp:Label ID="servername" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    服务器操作系统:<asp:Label ID="serverms" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    服务器IP地址:<asp:Label ID="serverip" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    服务器域名:
                    <asp:Label ID="server_name" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    服务器IIS版本:<asp:Label ID="serversoft" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    .NET解释引擎版本:<asp:Label ID="servernet" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    HTTPS:<asp:Label ID="serverhttps" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    HTTP访问端口:<asp:Label ID="serverport" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    服务端脚本执行超时:<asp:Label ID="serverout" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    服务器现在时间:<asp:Label ID="servertime" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    AspNet内存占用:<asp:Label ID="aspnetn" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    AspNetCPU时间:<asp:Label ID="aspnetcpu" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    正在使用内存:
                    <asp:Label ID="LbdwMemoryLoad" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    共有物理内存:<asp:Label ID="LbdwTotalPhys" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    剩余物理内存:<asp:Label ID="LbdwAvailPhys" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    交换文件:<asp:Label ID="LbdwTotalPageFile" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    网站Session总数:<asp:Label ID="servers" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    网站Application总数:<asp:Label ID="servera" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    网站目录绝对路径:<asp:Label ID="serverppath" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    执行文件绝对路径:<asp:Label ID="servernpath" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    CPU类型:<asp:Label ID="cputype" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    Access数据库:<asp:Label ID="serveraccess" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    CPU数:<asp:Label ID="cpuc" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    服务器所在时区:<asp:Label ID="serverarea" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    开机运行时长:<asp:Label ID="serverstart" runat="server"></asp:Label>小时
                </td>
                <td class="td_bg" width="50%">
                    进程开始时间:<asp:Label ID="prstart" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="td_bg" width="50%" height="23">
                    剩余交换文件<asp:Label ID="LbdwAvailPageFile" runat="server"></asp:Label>
                </td>
                <td class="td_bg" width="50%">
                    总虚拟内存<asp:Label ID="LbdwTotalVirtual" runat="server"></asp:Label>
                </td>
            </tr>
    </table>
     [DllImport("kernel32")]
        public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);    //定义内存的信息结构
        [StructLayout(LayoutKind.Sequential)]
        public struct MEMORY_INFO
        {
            public uint dwLength;
            public uint dwMemoryLoad;
            public uint dwTotalPhys;
            public uint dwAvailPhys;
            public uint dwTotalPageFile;
            public uint dwAvailPageFile;
            public uint dwTotalVirtual;
            public uint dwAvailVirtual;
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Expires = 0;
            Response.CacheControl = "no-cache";        if (!(IsPostBack))
            {
                TimeSpan stime = DateTime.Now.TimeOfDay;
                servername.Text = Server.MachineName;
                serverms.Text = Environment.OSVersion.ToString();
                serverip.Text = Request.ServerVariables["LOCAL_ADDR"];
                server_name.Text = Request.ServerVariables["http_host"];
                serversoft.Text = Request.ServerVariables["server_software"];
                servernet.Text = Environment.Version.Major + "." + Environment.Version.Minor + "." + Environment.Version.Build + "." + Environment.Version.Revision;
                serverhttps.Text = Request.ServerVariables["HTTPS"];
                serverport.Text = Request.ServerVariables["server_port"];
                serverout.Text = Server.ScriptTimeout.ToString();
                servertime.Text = DateTime.Now.ToString();
                serverarea.Text = (DateTime.Now - DateTime.UtcNow).TotalHours > 0 ? "+" + (DateTime.Now - DateTime.UtcNow).TotalHours.ToString() : (DateTime.Now - DateTime.UtcNow).TotalHours.ToString();
                try
                {
                    aspnetn.Text = (System.Diagnostics.Process.GetCurrentProcess().WorkingSet / 1048576).ToString("N2") + " MB";
                }
                catch
                {
                    aspnetn.Text = "系统拒绝提供。";
                }
                try
                {
                    aspnetcpu.Text = (System.Diagnostics.Process.GetCurrentProcess().TotalProcessorTime).TotalSeconds.ToString("N0") + " 秒";
                }
                catch
                {
                    aspnetcpu.Text = "系统拒绝提供。";
                }
                serverstart.Text = (System.Environment.TickCount / 3600000).ToString("N2");
                try
                {
                    prstart.Text = System.Diagnostics.Process.GetCurrentProcess().StartTime.ToString();
                }
                catch
                {
                    prstart.Text = "系统拒绝提供。";
                }
                cpuc.Text = Environment.GetEnvironmentVariable("NUMBER_OF_PROCESSORS");
                cputype.Text = Environment.GetEnvironmentVariable("PROCESSOR_IDENTIFIER");            //调用GlobalMemoryStatus函数获取内存的相关信息
                MEMORY_INFO MemInfo;
                MemInfo = new MEMORY_INFO();
                GlobalMemoryStatus(ref MemInfo);
                LbdwMemoryLoad.Text = MemInfo.dwMemoryLoad + " %";
                LbdwTotalPhys.Text = dFileSize(MemInfo.dwTotalPhys);
                LbdwAvailPhys.Text = dFileSize(MemInfo.dwAvailPhys);
                LbdwTotalPageFile.Text = dFileSize(MemInfo.dwTotalPageFile);
                LbdwAvailPageFile.Text = dFileSize(MemInfo.dwAvailPageFile);
                LbdwTotalVirtual.Text = dFileSize(MemInfo.dwTotalVirtual);
                serverppath.Text = Request.ServerVariables["APPL_PHYSICAL_PATH"];
                servernpath.Text = Request.ServerVariables["path_translated"];
                servers.Text = Session.Contents.Count.ToString();
                servera.Text = Application.Contents.Count.ToString();
                TimeSpan etime = DateTime.Now.TimeOfDay;
                TimeSpan t = etime.Subtract(stime);
                runtime.Text = t.TotalMilliseconds.ToString();
            }
        }