您的位置:首页 > 编程语言 > C#

C#中如何获取系统版本,内存大小,显卡类型,CPU型号

2009-08-20 11:41 681 查看
C#中如何获取系统版本,内存大小,显卡类型,CPU型号
2008年05月15日 星期四 11:52
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Runtime.InteropServices;

        private static CPU_INFO CpuInfo;
        private static MEMORY_INFO MemoryInfo;
        /// <summary>
        /// 静态构造函数
        /// </summary>
        static ServerInfo()
        {
            CpuInfo = new CPU_INFO();
            GetSystemInfo(ref CpuInfo);

            MemoryInfo = new MEMORY_INFO();
            GlobalMemoryStatus(ref MemoryInfo);
        }

        #region 服务器相关硬件信息

        #region 定义API引用
        /// <summary>
        /// CPU信息
        /// </summary>
        /// <param name="cpuinfo">CPU_INFO</param>
        
        public static extern void GetSystemInfo(ref CPU_INFO cpuinfo);

        /// <summary>
        /// 内存信息
        /// </summary>
        /// <param name="meminfo"></param>
        
        public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);
#endregion

        #region CPU相关
        /// <summary>
        /// 获取CPU数量
        /// </summary>
        public static string Count
        {
            get { return CpuInfo.NumberOfProcessors.ToString(); }
        }

        /// <summary>
        /// 获取CPU类型
        /// </summary>
        public static string Type
        {
            get { return CpuInfo.ProcessorType.ToString(); }
        }

        /// <summary>
        /// 获取CPU等级
        /// </summary>
        public static string Level
        {
            get { return CpuInfo.ProcessorLevel.ToString(); }
        }

        /// <summary>
        /// 获取CPUOemID
        /// </summary>
        public static string OemID
        {
            get { return CpuInfo.OemID.ToString(); }
        }

        /// <summary>
        /// CPU页面大小
        /// </summary>
        public static string PageSize
        {
            get { return CpuInfo.PageSize.ToString(); }
        }

        #endregion

        #region 内存相关
        /// <summary>
        /// 物理内存总大小
        /// </summary>
        public static string TotalPhys
        {
            get { return MemoryInfo.TotalPhys.ToString(); }
        }

        /// <summary>
        /// 可用物理内存
        /// </summary>
        public static string AvailPhys
        {
            get { return MemoryInfo.AvailPhys.ToString(); }
        }

        /// <summary>
        /// 交换页面总大小
        /// </summary>
        public static string TotalPageFile
        {
            get { return MemoryInfo.TotalPageFile.ToString(); }
        }

        /// <summary>
        /// 可交换页面大小
        /// </summary>
        public static string AvailPageFile
        {
            get { return MemoryInfo.AvailPageFile.ToString(); }
        }

        /// <summary>
        /// 虚拟内存总大小
        /// </summary>
        public static string TotalVirtual
        {
            get { return MemoryInfo.TotalVirtual.ToString(); }
        }

        /// <summary>
        /// 可用虚拟内存
        /// </summary>
        public static string AvailVirtual
        {
            get { return MemoryInfo.AvailVirtual.ToString(); }
        }

        /// <summary>
        /// 已经内存
        /// </summary>
        public static string Load
        {
            get { return MemoryInfo.MemoryLoad.ToString(); }
        }

        #endregion

        #endregion
    /// <summary>
    /// 定义CPU的信息结构
    /// </summary>
    
    public struct CPU_INFO
    {
        public uint OemID;
        public uint PageSize;
        public uint MinimumApplicationAddress;    
        public uint MaximumApplicationAddress;    
        public uint ActiveProcessorMask;    
        public uint NumberOfProcessors;    
        public uint ProcessorType;    
        public uint AllocationGranularity;    
        public uint ProcessorLevel;    
        public uint ProcessorRevision;    
    }

    /// <summary>
    /// 定义内存的信息结构  
    /// </summary>
        
    public struct MEMORY_INFO    
    {  
        public uint Length;  
        public uint MemoryLoad;    
        public uint TotalPhys;    
        public uint AvailPhys;    
        public uint TotalPageFile;    
        public uint AvailPageFile;    
        public uint TotalVirtual;    
        public uint AvailVirtual;
    }

--------------------------------------------------------

用WMI,在.Net下就是System.Management名称空间,可以获得计算机几乎所有的硬件信息

--------------------------------------------------------

http://www.codeproject.com/csharp/wmi.asp

--------------------------------------------------------

给你一个类:
很好用的;

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

    protected 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.Value.ToString();
            }
            moc=null;
            mc=null;
            return cpuInfo;
        }
        catch
        {
            return "unknow";
        }
    }

    string GetMacAddress()
    {
        try
        {
            //获取网卡硬件地址
            string mac="";
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection moc = mc.GetInstances();
            foreach(ManagementObject mo in moc)
            {
                if((bool)mo == true)
                {
                    mac=mo.ToString();
                    break;
                }
            }
            moc=null;
            mc=null;
            return mac;
        }
        catch
        {
            return "unknow";
        }
    }

    string GetIPAddress()
    {
        try
        {
            //获取IP地址
            string st="";
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection moc = mc.GetInstances();
            foreach(ManagementObject mo in moc)
            {
                if((bool)mo == true)
                {
                    //st=mo.ToString();
                    System.Array ar;
                    ar=(System.Array)(mo.Properties.Value);
                    st=ar.GetValue(0).ToString();
                    break;
                }
            }
            moc=null;
            mc=null;
            return st;
        }
        catch
        {
            return "unknow";
        }
    }

    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.Value;
            }
            moc=null;
            mc=null;
            return HDid;
        }
        catch
        {
            return "unknow";
        }
    }

/// <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.ToString();
            }
            moc=null;
            mc=null;
            return st;
        }
        catch
        {
            return "unknow";
        }
    }

/// <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.ToString();
            }
            moc=null;
            mc=null;
            return st;
        }
        catch
        {
            return "unknow";
        }
    }

/// <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.ToString();
            }
            moc=null;
            mc=null;
            return st;
        }
        catch
        {
            return "unknow";
        }
    }

/// <summary>
/// 获取计算机名
/// </summary>
/// <returns></returns>
    string GetComputerName()
    {
        try
        {
            return System.Environment.GetEnvironmentVariable("ComputerName");
        }
        catch
        {
            return "unknow";
        }
    }

/// <summary>
/// 获取用户名机名
/// </summary>
/// <returns></returns>
    string GetComputerName()
    {
        try
        {
            return System.Environment.GetEnvironmentVariable("UserName");
        }
        catch
        {
            return "unknow";
        }
    }
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息