欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于C#編寫獲取硬件信息的工具類

 更新時間:2023年11月29日 10:34:37   作者:rjcql  
這篇文章主要為大家詳細介紹了如何利用C#編寫一個獲取硬件信息的簡單工具類,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下

寫在前面

通過性能計數(shù)器類 PerformanceCounter 傳入計數(shù)器名稱,獲取對應(yīng)的系統(tǒng)指標數(shù)據(jù),以便進行分析和參考。
通過System.Management類庫中的ManagementObjectSearcher類實現(xiàn)對管理信息的查詢,比如:主板信息、內(nèi)存信息、硬盤信息、顯卡信息、聲卡信息、網(wǎng)卡信息、生產(chǎn)商和生產(chǎn)日期等。

需引入一下命名空間:

using System.Diagnostics;
using System.Management;
using System.Net.NetworkInformation;
using System.Text.Json;

代碼實現(xiàn)

    public class DeviceInfoHelper
    {
        /// <summary>
        /// 獲取CPU利用率
        /// </summary>
        public static float GetCpuStatus()
        {
            // 創(chuàng)建對 CPU 占用百分比的性能計數(shù)器。
            var cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total");
            if (cpuCounter != null)
            {
                return cpuCounter.NextValue();
            }
            return 0;
        }
 
        /// <summary>
        /// 獲取剩余內(nèi)存
        /// </summary>
        public static float GetAvailableMemory()
        {
            // 創(chuàng)建內(nèi)存占用字節(jié)數(shù)的性能計數(shù)器
            var ramCounter = new PerformanceCounter("Memory", "Available MBytes");
            if (ramCounter != null)
            {
                return ramCounter.NextValue();
            }
            return 0;
        }
 
        /// <summary>
        /// 獲取當(dāng)前進程CPU和內(nèi)存使用情況
        /// </summary>
        public static Tuple<float, float> GetCurrentProcessorUsage()
        {
            var processName = Process.GetCurrentProcess().ProcessName;
            var theCPUCounter = new PerformanceCounter("Process", "% Processor Time", processName);
            var theMemCounter = new PerformanceCounter("Process", "Working Set", processName);
            return new Tuple<float, float>(theCPUCounter.NextValue(), theMemCounter.NextValue());
        }
 
        /// <summary>
        /// 獲取硬件信息摘要
        /// </summary>
        public static string GetHardwareSummary()
        {
            var hdInfo = new HardwardSummary
            {
                MainboardName = "未知",
                MemorySize = "未知",
                HarddiskSize = "未知",
                VideocardName = "未知",
                SoundcardName = "未知",
                NetworkcardName = "未知",
                ManufacturerName = "未知",
                ManufactureDate = "未知"
            };
 
            #region 主板信息
 
            try
            {
                ManagementObjectSearcher myMainboard = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
                foreach (ManagementObject board in myMainboard.Get())
                {
                    hdInfo.MainboardName = board["Product"].ToString();
                }
            }
            catch (Exception ex)
            {
                hdInfo.MainboardName = "未知";
            }
 
            #endregion
 
            #region 內(nèi)存信息
 
            try
            {
                ManagementObjectSearcher myMemory = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMemory");
                //定義內(nèi)存總大小變量
                double MemorySize = 0;
                foreach (ManagementObject obj in myMemory.Get())
                {
                    //將內(nèi)存大小換算成G單位
                    MemorySize += Convert.ToDouble(obj["Capacity"]) / 1024 / 1024 / 1024;
                }
                hdInfo.MemorySize = MemorySize.ToString() + "G";
            }
            catch (ManagementException e)
            {
                hdInfo.MemorySize = "未知";
            }
 
            #endregion
 
            #region 硬盤信息
 
            try
            {
                //獲取本機所有硬盤信息  
                ManagementObjectSearcher myHarddisk = new ManagementObjectSearcher("select * from Win32_DiskDrive");
                foreach (ManagementObject drive in myHarddisk.Get())
                {
                    //獲取硬盤容量
                    var capacity = (Convert.ToDouble(drive["Size"]) / 1024 / 1024 / 1024).ToString("0.00") + "G";
                    //獲取硬盤類型
                    var mediaType = drive["MediaType"];
                    hdInfo.HarddiskSize = capacity.ToString() + "|" + mediaType.ToString();
                }
            }
            catch (Exception ex)
            {
                hdInfo.HarddiskSize = "未知";
            }
 
            #endregion
 
            #region 顯卡信息
 
            try
            {
                ManagementObjectSearcher myVideoObject = new ManagementObjectSearcher("select * from Win32_VideoController");
                foreach (ManagementObject obj in myVideoObject.Get())
                {
                    hdInfo.VideocardName = obj["Name"].ToString();
                }
            }
            catch (ManagementException ex)
            {
                hdInfo.VideocardName = "未知";
            }
 
            #endregion
 
            #region 聲卡信息
 
            try
            {
                // 創(chuàng)建WMI搜索對象
                ManagementObjectSearcher mySoundcard = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_SoundDevice");
                // 遍歷搜索結(jié)果
                foreach (ManagementObject mo in mySoundcard.Get())
                {
                    // 獲取聲卡名稱
                    hdInfo.SoundcardName = mo.GetPropertyValue("Name").ToString();
                }
            }
            catch (ManagementException ex)
            {
                hdInfo.SoundcardName = "未知";
            }
 
            #endregion
 
            #region 網(wǎng)卡信息
 
            try
            {
                // 獲取本地網(wǎng)絡(luò)接口信息 
                NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
                foreach (NetworkInterface adapter in nics)
                {
                    // 如果是RJ45網(wǎng)卡 
                    if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
                    {
                        string S1 = (string)adapter.Description;
                        if (S1.Contains("PCI"))
                        {
                            hdInfo.NetworkcardName = S1;
                        }
                    }
                }
            }
            catch (ManagementException ex)
            {
                hdInfo.NetworkcardName = "未知";
            }
 
            #endregion
 
            #region 生產(chǎn)商和生產(chǎn)日期
 
            try
            {
                //獲取生產(chǎn)商
                ManagementObjectSearcher ManufacturerInfo = new ManagementObjectSearcher("select * from Win32_ComputerSystem");
                foreach (ManagementObject obj in ManufacturerInfo.Get())
                {
                    hdInfo.ManufacturerName = obj["Manufacturer"].ToString();
                }
                //獲取生產(chǎn)日期
                ConnectionOptions options = new ConnectionOptions();
                ManagementScope scope = new ManagementScope("\\\\.\\root\\cimv2", options);
                ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_BIOS");
                ManagementObjectSearcher BoisInfo = new ManagementObjectSearcher(scope, query);
                foreach (ManagementObject mo in BoisInfo.Get())
                {
                    string StrManufactureDate = mo["ReleaseDate"].ToString().Substring(0, 8);
                    DateTime DT = DateTime.ParseExact(StrManufactureDate, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture);
                    hdInfo.ManufactureDate = String.Format("{0:d}", DT);
                }
            }
            catch (Exception ex)
            {
                hdInfo.ManufacturerName = "未知";
                hdInfo.ManufactureDate = "未知";
            }
 
            #endregion
 
            return JsonSerializer.Serialize(hdInfo);
        }
    }
 
    public class HardwardSummary
    {
        public string MainboardName { get; set; }
        public string MemorySize { get; set; }
        public string HarddiskSize { get; set; }
        public string VideocardName { get; set; }
        public string SoundcardName { get; set; }
        public string NetworkcardName { get; set; }
        public string ManufacturerName { get; set; }
        public string ManufactureDate { get; set; }
    }

到此這篇關(guān)于基于C#編寫獲取硬件信息的工具類的文章就介紹到這了,更多相關(guān)C#獲取硬件信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論