C#获取电脑硬件信息

方法大多是从网上搜到的,由于出处太多,有一些方法又经过了修改,具体出处已无从考证,如有冒犯望谅解,此处仅供学习使用

首先引用System.Management

获取硬盘信息

  1. 方法一
        /// <summary>
        /// 硬盘ID,大小
        /// </summary>
        /// <returns></returns>
        public Dictionary<string, string> GetDisk()  
        {
            Dictionary<string, string> dic = new Dictionary<string, string>();
            ManagementClass mc = new ManagementClass("Win32_DiskDrive");
            ManagementObjectCollection moc = mc.GetInstances();
            foreach (ManagementObject mo in moc)
            {
                string HDid = (string)mo.Properties["Model"].Value;
                string bytes = mo["Size"].ToString();
                dic.Add(HDid, bytes);
            }
            moc = null;
            mc = null;
            return dic;   
        } 
  1. 方法二
        /// <summary>
        /// 获取驱动盘符
        /// C,D,E,F
        /// </summary>
        /// <returns></returns>
        public List<string> GetRemovableDeviceID()
        {
            List<string> deviceIDs = new List<string>();
            ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT  *  From  Win32_LogicalDisk ");
            ManagementObjectCollection queryCollection = query.Get();
            foreach (ManagementObject mo in queryCollection)
            {
                switch (int.Parse(mo["DriveType"].ToString()))
                {
                    case (int)DriveType.Removable:   //可以移动磁盘       
                        {
                            //MessageBox.Show("可以移动磁盘");  
                            deviceIDs.Add(mo["DeviceID"].ToString());
                            break;
                        }
                    case (int)DriveType.Fixed:   //本地磁盘       
                        {
                            //MessageBox.Show("本地磁盘");  
                            deviceIDs.Add(mo["DeviceID"].ToString());
                            break;
                        }
                    case (int)DriveType.CDRom:   //CD   rom   drives       
                        {
                            //MessageBox.Show("CD   rom   drives ");  
                            break;
                        }
                    case (int)DriveType.Network:   //网络驱动     
                        {
                            //MessageBox.Show("网络驱动器 ");  
                            break;
                        }
                    case (int)DriveType.Ram:
                        {
                            //MessageBox.Show("驱动器是一个 RAM 磁盘 ");  
                            break;
                        }
                    case (int)DriveType.NoRootDirectory:
                        {
                            //MessageBox.Show("驱动器没有根目录 ");  
                            break;
                        }
                    default:   //defalut   to   folder       
                        {
                            //MessageBox.Show("驱动器类型未知 ");  
                            break;
                        }
                }

            }
            return deviceIDs;
        } 
  1. 方法三
        /// <summary>  
        /// 物理内存  
        /// </summary>  
        /// <returns></returns>  
        public 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";  
            }   
        } 
  1. 方法四
    获取每个盘符大小
            List<string> drives = GetRemovableDeviceID();
            foreach(string d in drives)
            {
                long G = TotalPhys(d);
            }
public long DrivePhys(string drive)
        {
            ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"" + drive + "\"");
            disk.Get();
            string bytes = disk["Size"].ToString();
            return long.Parse(bytes);
        }
  1. 方法五
/// <summary> 
        /// 物理内存总大小 
        /// </summary> 
        public static string TotalPhys()
        {
            ManagementObjectSearcher objvide = new ManagementObjectSearcher("select * from Win32_DiskDrive");
            string ret = null;
            foreach (ManagementObject obj in objvide.Get())
            {
                string a = obj["MediaType"].ToString();
                string a1 = obj["SizeBytes"].ToString();
            }
            return ret;
        }
  1. 方法六
/// <summary> 
        /// 物理内存总大小 
        /// </summary> 
        public static string TotalPhys()
        {
            ManagementObjectSearcher objvide = new ManagementObjectSearcher("select * from CIM_OperatingSystem");
            string ret = null;
            foreach (ManagementObject obj in objvide.Get())
            {
                // 具体这四种都是什么记不清了,看英文吧,不过好像不是很准
                string a = obj["FreePhysicalMemory"].ToString(); 
                string a1 = obj["FreeVirtualMemory"].ToString();
                string a2 = obj["TotalVirtualMemorySize"].ToString();
                string a3 = obj["TotalVisibleMemorySize"].ToString();
            }
            return ret;
        }

获取声卡

/// <summary>
        /// 获取声卡
        /// </summary>
        /// <returns></returns>
        public string SoundDevice()
        {
            ManagementObjectSearcher objvide = new ManagementObjectSearcher("select * from Win32_SoundDevice");
            string ret = null;
            foreach (ManagementObject obj in objvide.Get())
            {
                ret = obj["Name"].ToString();
                //string a = "Name - " + obj["Name"];
                //string a1 = "DeviceID - " + obj["DeviceID"];
                //string a2 = "AdapterRAM - " + obj["AdapterRAM"];
                //string a3 = "AdapterDACType - " + obj["AdapterDACType"] ;
                //string a4 = "Monochrome - " + obj["Monochrome"];
                //string a5 = "InstalledDisplayDrivers - " + obj["InstalledDisplayDrivers"];
                //string a6 = "DriverVersion - " + obj["DriverVersion"];
                //string a7 = "VideoProcessor - " + obj["VideoProcessor"];
                //string a8 = "VideoArchitecture - " + obj["VideoArchitecture"];
                //string a9 = "VideoMemoryType - " + obj["VideoMemoryType"];
            }
            return ret;
        }

获取显卡

/// <summary>
        /// 获取显卡
        /// </summary>
        public string GetVGACard()
        {
            ManagementObjectSearcher objvide = new ManagementObjectSearcher("select * from Win32_VideoController");
            string ret = null;
            foreach (ManagementObject obj in objvide.Get())
            {
                ret = obj["Name"].ToString();
                //string a = "Name - " + obj["Name"];
                //string a1 = "DeviceID - " + obj["DeviceID"];
                //string a2 = "AdapterRAM - " + obj["AdapterRAM"];
                //string a3 = "AdapterDACType - " + obj["AdapterDACType"] ;
                //string a4 = "Monochrome - " + obj["Monochrome"];
                //string a5 = "InstalledDisplayDrivers - " + obj["InstalledDisplayDrivers"];
                //string a6 = "DriverVersion - " + obj["DriverVersion"];
                //string a7 = "VideoProcessor - " + obj["VideoProcessor"];
                //string a8 = "VideoArchitecture - " + obj["VideoArchitecture"];
                //string a9 = "VideoMemoryType - " + obj["VideoMemoryType"];
            }
            return ret;
        }

显卡配置信息说明http://blog.csdn.net/yeyingss/article/details/49385447

操作系统


        /// <summary>
        /// 获取操作系统
        /// </summary>
        /// <returns></returns>
        public string GetSys()
        {
            var name = (from x in new ManagementObjectSearcher("SELECT Caption FROM Win32_OperatingSystem").Get().Cast<ManagementObject>()
                        select x.GetPropertyValue("Caption")).FirstOrDefault();
            return name != null ? name.ToString() : "Unknown";
        }

电脑类型

/// <summary>
        /// 电脑类型
        /// </summary>
        /// <returns></returns>
        public ChassisTypes GetComputerType()
        {
            ManagementClass systemEnclosures = new ManagementClass("Win32_SystemEnclosure");
            foreach (ManagementObject obj in systemEnclosures.GetInstances())
            {
                foreach (int i in (UInt16[])(obj["ChassisTypes"]))
                {
                    if (i > 0 && i < 25)
                    {
                        return (ChassisTypes)i;
                    }
                }
            }
            return ChassisTypes.Unknown;
        }
        public enum ChassisTypes
        {
            Other = 1,
            Unknown,
            Desktop,
            LowProfileDesktop,
            PizzaBox,
            MiniTower,
            Tower,
            Portable,
            Laptop,
            Notebook,
            Handheld,
            DockingStation,
            AllInOne,
            SubNotebook,
            SpaceSaving,
            LunchBox,
            MainSystemChassis,
            ExpansionChassis,
            SubChassis,
            BusExpansionChassis,
            PeripheralChassis,
            StorageChassis,
            RackMountChassis,
            SealedCasePC
        }

系统名称

/// <summary>  
        /// 系统名称  
        /// </summary>  
        /// <returns></returns>  
        public string GetComputerName()  
        {  
            try  
            {  
                return System.Environment.GetEnvironmentVariable("ComputerName");  
            }  
            catch  
            {  
                return "unknow";  
            }   
        }

PC位数

        /// <summary>  
        /// PC位数
        /// </summary>  
        /// <returns></returns>  
        public 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";  
            }   

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

        } 

系统登录用户

        /// <summary>  
        /// 操作系统的登录用户名  
        /// </summary>  
        /// <returns></returns>  
        public string GetUserName()  
        {  
            try  
            {  
                string st = "";  
                ManagementClass mc = new ManagementClass("Win32_Processor");  
                ManagementObjectCollection moc = mc.GetInstances();  
                foreach (ManagementObject mo in moc)  
                {   
                    st = mo["AddressWidth"].ToString();   
                }  
                moc = null;  
                mc = null;  
                return st;  
            }  
            catch  
            {  
                return "unknow";  
            }   
        } 

Win32_Processor参数说明http://blog.csdn.net/yeyingss/article/details/49385421

IP地址

        /// <summary>
        /// IP地址
        /// </summary>
        /// <returns></returns>
        public 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";  
            }   
        } 

mac地址

        /// <summary>
        /// MAC地址
        /// </summary>
        /// <returns></returns>
        public 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";  
            }   
        }

CPU序列号

        /// <summary>
        /// CPU序列号
        /// </summary>
        /// <returns></returns>
        public 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";  
            }   
        }

读取内存

需要引用:Microsoft.VisualBasic
参考http://blog.csdn.net/kmguo/article/details/20560393

using System;  
using Microsoft.VisualBasic.Devices;  
namespace ConsoleApplication2  
{  
    internal class Program  
    {  
        private static void Main(string[] args)  
        {  
            ComputerInfo ci = new ComputerInfo();  
            Console.WriteLine("系统物理内存(M):"+ci.TotalPhysicalMemory/1024/1024);  
            Console.WriteLine("系统虚拟内存(M):"+ci.TotalVirtualMemory/1024/1024);  
            Console.WriteLine("可用物理内存(M):"+ci.AvailablePhysicalMemory/1024/1024);  
            Console.WriteLine("可用虚拟内存(M):" + ci.AvailableVirtualMemory/1024/1024);  
        }  

    }  
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
想要获取电脑精确的硬件信息,可以通过调用操作系统提供的API来获取。下面以Windows操作系统为例,介绍如何获取一些常见的硬件信息: 1. 获取CPU信息 可以使用WMI (Windows Management Instrumentation)来获取CPU信息。以下是C#代码示例: ```csharp using System.Management; public static string GetCpuInfo() { string cpuInfo = ""; ManagementClass mc = new ManagementClass("win32_processor"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { cpuInfo = mo.Properties["Name"].Value.ToString(); break; } return cpuInfo; } ``` 2. 获取内存信息 可以使用GlobalMemoryStatusEx函数来获取内存信息。以下是C#代码示例: ```csharp using System.Runtime.InteropServices; [StructLayout(LayoutKind.Sequential)] public struct MEMORYSTATUSEX { public uint dwLength; public uint dwMemoryLoad; public ulong ullTotalPhys; public ulong ullAvailPhys; public ulong ullTotalPageFile; public ulong ullAvailPageFile; public ulong ullTotalVirtual; public ulong ullAvailVirtual; public ulong ullAvailExtendedVirtual; } [DllImport("kernel32.dll")] public static extern bool GlobalMemoryStatusEx(ref MEMORYSTATUSEX lpBuffer); public static ulong GetTotalMemory() { MEMORYSTATUSEX memStatusEx = new MEMORYSTATUSEX(); memStatusEx.dwLength = (uint)Marshal.SizeOf(typeof(MEMORYSTATUSEX)); GlobalMemoryStatusEx(ref memStatusEx); return memStatusEx.ullTotalPhys; } ``` 3. 获取显卡信息 可以使用EnumDisplayDevices和GetDeviceCaps函数来获取显卡信息。以下是C#代码示例: ```csharp using System.Runtime.InteropServices; [StructLayout(LayoutKind.Sequential)] public struct DISPLAY_DEVICE { public uint cb; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string DeviceName; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] public string DeviceString; public uint StateFlags; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] public string DeviceID; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] public string DeviceKey; } [DllImport("user32.dll")] public static extern bool EnumDisplayDevices(string lpDevice, uint iDevNum, ref DISPLAY_DEVICE lpDisplayDevice, uint dwFlags); [DllImport("gdi32.dll")] public static extern int GetDeviceCaps(IntPtr hdc, int nIndex); public static string GetGraphicsCardInfo() { DISPLAY_DEVICE displayDevice = new DISPLAY_DEVICE(); displayDevice.cb = (uint)Marshal.SizeOf(typeof(DISPLAY_DEVICE)); EnumDisplayDevices(null, 0, ref displayDevice, 0); IntPtr hdc = CreateDC(displayDevice.DeviceName, null, null, IntPtr.Zero); int devCaps = GetDeviceCaps(hdc, 6); string graphicsCardInfo = string.Format("{0} (Memory: {1} MB)", displayDevice.DeviceString.Trim(), devCaps / 1024); return graphicsCardInfo; } ``` 需要注意的是,以上代码只是获取硬件信息的一种方式,不同的操作系统和硬件配置可能需要不同的API和方法来获取精确的硬件信息

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值