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

C#获取系统版本、内存大小、显卡类型、cpu型号

2012-06-06 11:41 537 查看
http://syxc.iteye.com/blog/728710

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名称空间,可以获得计算机几乎所有的硬件信息

给你一个类:

很好用的;

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

        }

    }

}

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