获取电脑硬件信息 (硬盘,cpu,内存等)

1、电脑信息类

#region 获取电脑信息类


    internal enum WmiType
    {
        Win32_Processor,
        Win32_PerfFormattedData_PerfOS_Memory,
        Win32_PhysicalMemory,
        Win32_NetworkAdapterConfiguration,
        Win32_LogicalDisk
    }

    public class Computer
    {
        static Dictionary<string, ManagementObjectCollection> WmiDict = new Dictionary<string, ManagementObjectCollection>();

        static Computer()
        {

            var names = Enum.GetNames(typeof(WmiType));
            foreach (string name in names)
            {
                WmiDict.Add(name, new ManagementObjectSearcher("SELECT * FROM " + name).Get());
            }

        }

        /// <summary>
        /// 获取硬盘号码
        /// </summary>
        /// <returns></returns>
        public static string GetHardDiskNumber()
        {
            var query = WmiDict[WmiType.Win32_LogicalDisk.ToString()];
            //var collection = query.Get();

            string result = string.Empty;
            foreach (var obj in query)
            {
                result = obj["VolumeSerialNumber"].ToString();
                break;
            }

            return result;
        }

        /// <summary>
        /// 获取CPU号码
        /// </summary>
        /// <returns></returns>
        public static string GetCPUNumber()
        {
            var query = WmiDict[WmiType.Win32_Processor.ToString()];
            //var collection = query.Get();

            string result = string.Empty;
            foreach (var obj in query)
            {
                result = obj["Processorid"].ToString();
                break;
            }

            return result;
        }

        /// <summary>
        /// 获取内存编号
        /// </summary>
        /// <returns></returns>
        public static string GetMemoryNumber()
        {
            var query = WmiDict[WmiType.Win32_PhysicalMemory.ToString()];
            //var collection = query.Get();

            string result = string.Empty;
            foreach (var obj in query)
            {
                result = obj["PartNumber"].ToString();
                break;
            }
            return result;
        }

        /// <summary>
        /// 获取硬盘信息
        /// </summary>
        /// <returns></returns>
        public static string HardDiskInfo()
        {
            DriveInfo[] drives = DriveInfo.GetDrives();
            StringBuilder sr = new StringBuilder();
            foreach (DriveInfo drive in drives)
            {
                if (drive.IsReady)
                {
                    var val1 = (double)drive.TotalSize / 1024 / 1024;
                    var val2 = (double)drive.TotalFreeSpace / 1024 / 1024;
                    //sr.AppendFormat("{0}:{2}/{3}MB/{4}MB/{1}%可用;",   
                    //    drive.Name,
                    //    string.Format("{0:F2}", val2 / val1 * 100),
                    //    drive.DriveFormat,
                    //    (long)val1,
                    //    (long)val2);

                    sr.AppendFormat("<br>{0}:{2}/共:{3}GB/可用:{4}GB/{1}%可用;",   //GB
                       drive.Name,
                       string.Format("{0:F2}", val2 / val1 * 100),
                       drive.DriveFormat,
                       string.Format("{0:F1}",   val1/1024),
                       string.Format("{0:F1}", val2 / 1024));
                }
            }
            return sr.ToString();
        }

        /// <summary>
        /// 获取操作系统信息
        /// </summary>
        /// <returns></returns>
        public static string OSInfo()
        {
            StringBuilder sr = new StringBuilder();
            sr.AppendFormat("<br>机器名:{0};<br>操作系统:{1};<br>系统文件夹:{2};<br>语言:{3};<br>.NET:{4};<br>当前目录:{5};<br>当前用户:{6};",
                Environment.MachineName,
                Environment.OSVersion,
                Environment.SystemDirectory,
                CultureInfo.InstalledUICulture.EnglishName,
                Environment.Version,
                Environment.CurrentDirectory,
                Environment.UserName);
            return sr.ToString();
        }

        /// <summary>
        /// 获取网卡信息
        /// </summary>
        /// <returns></returns>
        //public static string NetworkInfo()
        //{
        //    StringBuilder sr = new StringBuilder();

        //    string host = Dns.GetHostName();
        //    IPHostEntry ipEntry = Dns.GetHostByName(host);
        //    sr.Append("IPv4:" + ipEntry.AddressList[0] + "/");

        //    sr.Append("IPv6:");
        //    ipEntry = Dns.GetHostEntry(host);
        //    sr.Append("IPv6:" + ipEntry.AddressList[0] + ";");

        //    sr.Append("MAC:");
        //    var query = WmiDict[WmiType.Win32_NetworkAdapterConfiguration.ToString()];
        //    foreach (var obj in query)
        //    {
        //        if (obj["IPEnabled"].ToString() == "True")
        //            sr.Append(obj["MacAddress"] + ";");
        //    }

        //    return sr.ToString();
        //}

        /// <summary>
        /// 获取内存信息
        /// </summary>
        /// <returns></returns>
        public static string MemoryInfo()
        {
            StringBuilder sr = new StringBuilder();
            long capacity = 0;
            var query = WmiDict[WmiType.Win32_PhysicalMemory.ToString()];
            int index = 1;
            foreach (var obj in query)
            {
                //sr.Append("内存" + index + "频率:" + obj["ConfiguredClockSpeed"] + ";");
                capacity += Convert.ToInt64(obj["Capacity"]);
                index++;
            }
            sr.Append("<br>总物理内存:");
            //sr.Append(capacity / 1024 / 1024 + "MB;");  MB
            sr.Append(string.Format("{0:F1}", capacity / 1024 / 1024 / 1024) + "GB;");  //GB
            

            query = WmiDict[WmiType.Win32_PerfFormattedData_PerfOS_Memory.ToString()];
            sr.Append("<br>总可用内存:");
            long available = 0;
            foreach (var obj in query)
            {
                available += Convert.ToInt64(obj.Properties["AvailableMBytes"].Value);
            }
            //sr.Append(available + "MB;");  //MB
            sr.Append(string.Format("{0:F1}", available / 1024) + "GB;");  //GB
            sr.AppendFormat("<br>{0:F2}%可用; ", (double)available / (capacity / 1024 / 1024) * 100);

            return sr.ToString();
        }

        /// <summary>
        /// 获取CPU信息
        /// </summary>
        /// <returns></returns>
        public static string CpuInfo()
        {
            StringBuilder sr = new StringBuilder();

            var query = WmiDict[WmiType.Win32_Processor.ToString()];
            foreach (var obj in query)
            {
                sr.Append("<br>厂商:" + obj["Manufacturer"] + ";");
                sr.Append("<br>产品名称:" + obj["Name"] + ";");
                sr.Append("<br>最大频率:" + obj["MaxClockSpeed"] + ";");
                sr.Append("<br>当前频率:" + obj["CurrentClockSpeed"] + ";");
            }

            return sr.ToString();
        }
    }


    #endregion
获取电脑信息类

2、方法调用

string GetCPUNumber = Computer.GetCPUNumber();  //获取CPU号码
            string CpuInfo = Computer.CpuInfo();  //获取CPU信息

            string GetHardDiskNumber = Computer.GetHardDiskNumber();  //获取硬盘号码
            string HardDiskInfo = Computer.HardDiskInfo();  //获取硬盘信息

            string GetMemoryNumber = Computer.GetMemoryNumber();   //获取内存编号
            string MemoryInfo = Computer.MemoryInfo();  //获取内存信息

            string OSInfo = Computer.OSInfo();    //获取操作系统信息

            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("<br/>当前电脑配置信息:" + "<br/>");
            sb.AppendFormat("<br/>获取CPU号码:{0}" + "<br/>", GetCPUNumber);
            sb.AppendFormat("<br/>获取CPU信息:{0}" + "<br/>", CpuInfo);
            sb.AppendFormat("<br/>获取硬盘号码:{0}" + "<br/>", GetHardDiskNumber);
            sb.AppendFormat("<br/>获取硬盘信息:{0}" + "<br/>", HardDiskInfo);
            sb.AppendFormat("<br/>获取内存编号:{0}" + "<br/>", GetCPUNumber);
            sb.AppendFormat("<br/>获取内存信息:{0}" + "<br/>", MemoryInfo);
            sb.AppendFormat("<br/>获取操作系统信息:{0}" + "<br/>", OSInfo);

            return Content(sb.ToString());

3、运行效果如图:

猜你喜欢

转载自www.cnblogs.com/sharing1986687846/p/10283584.html