一个用C#获取硬件信息的类

本文介绍了一个使用C#实现的类,该类可以获取计算机的硬件信息,包括机器名、IP地址、CPU编号、硬盘编号、网卡MAC地址等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个用C#获取硬件信息的类

【转】http://blog.163.com/ditiedetiaozao/blog/static/1804128720094159422663/

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Management;

namespace GetPCInfo
{
    class HardInfoClass
    {
        [DllImport("kernel32.dll")]
        private static extern int GetVolumeInformation(

            string lpRootPathName,

            string lpVolumeNameBuffer,

            int nVolumeNameSize,

            ref int lpVolumeSerialNumber,

            int lpMaximumComponentLength,

            int lpFileSystemFlags,

            string lpFileSystemNameBuffer,

            int nFileSystemNameSize

        );

        public HardInfoClass()
        {
            //    

            // TODO: 在此处添加构造函数逻辑    

            //    

        }

        /// <summary>
        /// 获取机器名
        /// </summary>
        /// <returns></returns>
        public string GetHostName()
        {
            return System.Net.Dns.GetHostName();
        }

        /// <summary>
        /// 获得主机IP地址
        /// </summary>
        /// <returns></returns>
        public string GetHostIP()
        {
            return System.Net.Dns.GetHostAddresses(GetHostName())[0].ToString();
        }

        /// <summary>
        /// 获取CPU编号   
        /// </summary>
        /// <returns></returns>
        public string GetCpuID()
        {
            try
            {
                ManagementClass mc = new ManagementClass("Win32_Processor");

                ManagementObjectCollection moc = mc.GetInstances();

                string strCpuID = null;

                foreach (ManagementObject mo in moc)
                {
                    strCpuID = mo.Properties["ProcessorId"].Value.ToString();
                    break;
                }
                return strCpuID;
            }
            catch
            {

                return "";

            }

        }


        /// <summary>
        /// 获取第一块硬盘编号 
        /// </summary>
        /// <returns></returns>
        public string GetHardDiskID()
        {

            try
            {

                ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");

                string strHardDiskID = null;

                foreach (ManagementObject mo in searcher.Get())
                {
                    if (mo != null)
                    {
                        strHardDiskID = mo["SerialNumber"].ToString().Trim();

                        break;
                    }

                }

                return strHardDiskID;

            }

            catch (Exception ex)
            {
                return "null";
                //throw new Exception(ex.Message);
            }

        }

        /// <summary>
        /// 获取网卡MAC地址 
        /// </summary>
        /// <returns></returns>
        public string GetNetCardMAC()
        {

            try
            {

                string stringMAC = "";

                ManagementClass MC = new ManagementClass("Win32_NetworkAdapterConfiguration");

                ManagementObjectCollection MOC = MC.GetInstances();

                foreach (ManagementObject MO in MOC)
                {

                    if ((bool)MO["IPEnabled"] == true)
                    {
                        stringMAC += MO["MACAddress"].ToString();
                    }
                }
                return stringMAC;
            }
            catch
            {
                return "";
            }

        }


        /// <summary>
        /// 获取硬盘信息的代码    
        /// </summary>
        /// <param name="drvID"></param>
        /// <returns></returns>
        public string GetVolOf(string drvID)
        {

            try
            {

                const int MAX_FILENAME_LEN = 256;

                int retVal = 0;

                int a = 0;

                int b = 0;

                string str1 = null;

                string str2 = null;

 

                int i = GetVolumeInformation(

                 drvID + @":/",

                 str1,

                 MAX_FILENAME_LEN,

                 ref retVal,

                 a,

                 b,

                 str2,

                 MAX_FILENAME_LEN

                 );

                return retVal.ToString("x");

            }

            catch
            {

                return "";

            }

        }

        /// <summary>
        /// 获取当前网卡IP地址    
        /// </summary>
        /// <returns></returns>
        public string GetNetCardIP()
        {

            try
            {

                string stringIP = "";

                ManagementClass MC = new ManagementClass("Win32_NetworkAdapterConfiguration");

                ManagementObjectCollection MOC = MC.GetInstances();

 

                foreach (ManagementObject MO in MOC)
                {

                    if ((bool)MO["IPEnabled"] == true)
                    {

                        string[] IPAddresses = (string[])MO["IPAddress"];

                        if (IPAddresses.Length > 0)
                        {
                            stringIP = IPAddresses[0].ToString();
                        }
                    }
                }
                return stringIP;
            }
            catch
            {

                return "";

            }

        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值