Write in front
Pass in the counter name through the performance counter class PerformanceCounter to obtain the corresponding system metric data for analysis and reference.
The ManagementObjectSearcher class in the class library realizes querying management information, such as: motherboard information, memory information, hard disk information, graphics card information, sound card information, network card information, manufacturer and production date, etc.
You need to introduce a namespace:
using ; using ; using ; using ;
Code implementation
public class DeviceInfoHelper { /// <summary> /// Get CPU utilization /// </summary> public static float GetCpuStatus() { // Create a performance counter for CPU usage percentage. var cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total"); if (cpuCounter != null) { return (); } return 0; } /// <summary> /// Get the remaining memory /// </summary> public static float GetAvailableMemory() { // Create a performance counter with memory occupancy bytes var ramCounter = new PerformanceCounter("Memory", "Available MBytes"); if (ramCounter != null) { return (); } return 0; } /// <summary> /// Get the current process CPU and memory usage /// </summary> public static Tuple<float, float> GetCurrentProcessorUsage() { var processName = ().ProcessName; var theCPUCounter = new PerformanceCounter("Process", "% Processor Time", processName); var theMemCounter = new PerformanceCounter("Process", "Working Set", processName); return new Tuple<float, float>((), ()); } /// <summary> /// Get a summary of hardware information /// </summary> public static string GetHardwareSummary() { var hdInfo = new HardwardSummary { MainboardName = "unknown", MemorySize = "unknown", HarddiskSize = "unknown", VideocardName = "unknown", SoundcardName = "unknown", NetworkcardName = "unknown", ManufacturerName = "unknown", ManufactureDate = "unknown" }; #region motherboard information try { ManagementObjectSearcher myMainboard = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard"); foreach (ManagementObject board in ()) { = board["Product"].ToString(); } } catch (Exception ex) { = "unknown"; } #endregion #region Memory Information try { ManagementObjectSearcher myMemory = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMemory"); //Define the total memory size variable double MemorySize = 0; foreach (ManagementObject obj in ()) { //Convert memory size to G units MemorySize += (obj["Capacity"]) / 1024 / 1024 / 1024; } = () + "G"; } catch (ManagementException e) { = "unknown"; } #endregion #region Hard disk information try { //Get all hard disk information of this machine ManagementObjectSearcher myHarddisk = new ManagementObjectSearcher("select * from Win32_DiskDrive"); foreach (ManagementObject drive in ()) { //Get hard disk capacity var capacity = ((drive["Size"]) / 1024 / 1024 / 1024).ToString("0.00") + "G"; //Get hard disk type var mediaType = drive["MediaType"]; = () + "|" + (); } } catch (Exception ex) { = "unknown"; } #endregion #region Graphics Card Information try { ManagementObjectSearcher myVideoObject = new ManagementObjectSearcher("select * from Win32_VideoController"); foreach (ManagementObject obj in ()) { = obj["Name"].ToString(); } } catch (ManagementException ex) { = "unknown"; } #endregion #region Sound card information try { // Create WMI search object ManagementObjectSearcher mySoundcard = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_SoundDevice"); // traverse the search results foreach (ManagementObject mo in ()) { // Get the sound card name = ("Name").ToString(); } } catch (ManagementException ex) { = "unknown"; } #endregion #region network card information try { // Get local network interface information NetworkInterface[] nics = (); foreach (NetworkInterface adapter in nics) { // If it is an RJ45 network card if ( == ) { string S1 = (string); if (("PCI")) { = S1; } } } } catch (ManagementException ex) { = "unknown"; } #endregion #region Manufacturer and production date try { //Get the manufacturer ManagementObjectSearcher ManufacturerInfo = new ManagementObjectSearcher("select * from Win32_ComputerSystem"); foreach (ManagementObject obj in ()) { = obj["Manufacturer"].ToString(); } //Get production date 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 ()) { string StrManufactureDate = mo["ReleaseDate"].ToString().Substring(0, 8); DateTime DT = (StrManufactureDate, "yyyyMMdd", ); = ("{0:d}", DT); } } catch (Exception ex) { = "unknown"; = "unknown"; } #endregion return (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; } }
This is the end of this article about writing tools for obtaining hardware information based on C#. For more related content related to C# to obtain hardware information, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!