SoFunction
Updated on 2025-03-07

C# implementation sample code for obtaining computer information

1. Local information

1.Native name

 public static string getLocalhostName(){
    return ("COMPUTERNAME");
 }

2. Obtain the MAC address of the machine

public static string getLocalhostMac() {
    string mac = null;
    ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration");
    ManagementObjectCollection queryCollection = ();
    foreach (ManagementObject mo in queryCollection) {
        if (mo["IPEnabled"].ToString() == "True")
        mac = mo["MacAddress"].ToString();
    }
    return (mac);
}

3. Obtain the computer name

public static string getComputerName() {
    return ;
}

4. Monitor resolution

public static string getResolution() {
    return  + " x " + ;
}

5. Main display resolution

public static string getMainResolution() {
    return  + " x " + ;
}

6. System path

[DllImport("kernel32")]
public static extern void GetSystemDirectory(StringBuilder SysDir, int count);
 
public static string getSystemPath() {
    const int nChars = 128;
    StringBuilder Buff = new StringBuilder(nChars);
    GetSystemDirectory(Buff, nChars);
    return ();
}

2. Operating system information

1. Operating system type

public static string getSystemType() {
    string st = "";
    ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
    ManagementObjectCollection moc = ();
    foreach (ManagementObject mo in moc) {
        st = mo["SystemType"].ToString();
    }
    return st;
}

2. Obtain the operating system bit count

public static string getOSBit() {
    if (Environment.Is64BitOperatingSystem) {
        return "64bit."
    } else {
        return  "32bit.";
    }
}

3. Obtain the operating system version

public static string getOSVersion()  {
    return ;
}

3. Processor information

1. Number of processors

public static string getProcessorCount()  {
    return ();
}

4. CPU information

1. Number of CPUs

public static int getCpuCount() {
    try {
        using (ManagementClass mCpu = new ManagementClass("Win32_Processor")) {
            ManagementObjectCollection cpus = ();
            return ;
        }
    } catch { }
    return -1;
}

2. CPU version information

public static string getCpuVersion() {
    string st = "";
    ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * from Win32_Processor");
    foreach (ManagementObject mo in ()) {
        st = mo["Version"].ToString();
    }
    return st;
}

3. CPU name information

public static string getCpuName() {
    string st = "";
    ManagementObjectSearcher driveID = new ManagementObjectSearcher("Select * from Win32_Processor");
    foreach (ManagementObject mo in ()) {
        st = mo["Name"].ToString();
    }
    return st;
}

4. CPU serial number

public static string getCpuSerialNumber() {
    string strCpu = null;
    ManagementClass myCpu = new ManagementClass("win32_Processor");
    ManagementObjectCollection myCpuConnection = ();
    foreach (ManagementObject myObject in myCpuConnection) {
        strCpu = ["Processorid"].();
        break;
    }
    return strCpu;
}

5. CPU manufacturer

public static string getCPUManufacturer() {
    string st = "";
    ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * from Win32_Processor");
    foreach (ManagementObject mo in ()) {
        st = mo["Manufacturer"].ToString();
    }
    return st;
}

6. CPU frequency

The reason why string-type arrays are used here is mainly because of the multi-core of CPU

public static string[] getCpuMHZ() {
    ManagementClass mc = new ManagementClass("Win32_Processor");
    ManagementObjectCollection cpus = (); 
    string[] mHz = new string[];
    int c = 0;
    ManagementObjectSearcher mySearch = new ManagementObjectSearcher("select * from Win32_Processor");
    foreach (ManagementObject mo in ()) {
        mHz[c] = ["CurrentClockSpeed"].();
        c++;
    }
    ();
    ();
    return mHz;
}

V. Graphics card information

1. Graphics card PNPDeviceID

public static string getVideoPNPID() {
    string st = "";
    ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * from Win32_VideoController");
    foreach (ManagementObject mo in ()) {
        st = mo["PNPDeviceID"].ToString();
    }
    return st;
}

6. Hard disk information

1. The volume label number of the device hard disk

public static string getDiskVolumeSerialNumber() {
    ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
    ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");
    ();
    return ("VolumeSerialNumber").ToString();
}

2. The size of the hard disk

public static string getSizeOfDisk() {
    ManagementClass mc = new ManagementClass("Win32_DiskDrive");
    ManagementObjectCollection moj = ();
    foreach (ManagementObject m in moj) {
        return ["Size"].();
    }
    return "-1";
}

3. Hard disk serial number

public static string getHardDiskSerialNumber() {
    try {
        ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
        string sHardDiskSerialNumber = "";
        foreach (ManagementObject mo in ()) {
            sHardDiskSerialNumber = mo["SerialNumber"].ToString().Trim();
            break;
        }
        return sHardDiskSerialNumber;
    }
    catch {
        return "";
    }
}

7. Motherboard information

1. Motherboard serial number

public static string getBIOSSerialNumber() {
    try {
        ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_BIOS");
        string sBIOSSerialNumber = "";
        foreach (ManagementObject mo in ()) {
            sBIOSSerialNumber = mo["SerialNumber"].ToString().Trim();
        }
        return sBIOSSerialNumber;
    }
    catch {
        return "";
    }
}

2. Motherboard manufacturer

public static string getBoardManufacturer() {
    SelectQuery query = new SelectQuery("Select * from Win32_BaseBoard");
    ManagementObjectSearcher mos = new ManagementObjectSearcher(query);
     data = ().GetEnumerator();
    ();
    ManagementBaseObject board = ;
    return ("Manufacturer").ToString();
}

3. Motherboard number

public static string getBoardID() {
    string st = "";
    ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * from Win32_BaseBoard");
    foreach (ManagementObject mo in ()) {
        st = mo["SerialNumber"].ToString();
    }
    return st;
}

4. Motherboard model

public static string getBoardType() {
    string st = "";
    ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * from Win32_BaseBoard");
    foreach (ManagementObject mo in ()) {
        st = mo["Product"].ToString();
    }
    return st;
}

8. Memory information

1. Physical memory size

public static string getPhysicalMemory() {
    string st = "";
    ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
    ManagementObjectCollection moc = ();
    foreach (ManagementObject mo in moc) {
        st = mo["TotalPhysicalMemory"].ToString();
    }
    return st;
}

2. Memory utilization rate

[DllImport("kernel32")]
private static extern void GlobalMemoryStatus(ref StorageInfo memibfo);
 
[StructLayout()]
public struct StorageInfo //This is all in bytes {    public uint dwMemoryLoad;//Memory usage}
 
public static string getUtilizationRate() {
    StorageInfo memInfor = new StorageInfo();
    GlobalMemoryStatus(ref memInfor);
    return ("0.0");
}

9. Network card information

1. Network card hardware address

public static string getMacAddress() {
    string mac = "";
    ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
    ManagementObjectCollection moc = ();
    foreach (ManagementObject mo in moc) {
        if ((bool)mo["IPEnabled"] == true) {
            mac = mo["MacAddress"].ToString();
            break;
        }
    }
    return mac;
}

2. Network card address

public static string getNetCardMACAddress() {
    try {
        ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> 'Microsoft'))");
        string NetCardMACAddress = "";
        foreach (ManagementObject mo in ()) {
            NetCardMACAddress = mo["MACAddress"].ToString().Trim();
        }
        return NetCardMACAddress;
    }
    catch {
        return "";
    }
}

3. Adapter information

public static NetworkInterface[] getNetWorkInfo() {
    NetworkInterface[] adapters = ();
    return adapters;
}
// Set content to text boxpublic void setContent() {
    tb_net_work_adapter_num.Text = ();
    int index = 0;
    foreach (NetworkInterface adapter in adapters) {
        index++;
        //Display network adapter description information, name, type, speed, MAC address        tb_net_wark_adapter_info.Text = tb_net_wark_adapter_info.Text + ("------------------------------------------------------------------------------------------------------------------------------ + index + "Adapter information --------------------------------------------------------------------------------------------------------------------------) + "\n";
        tb_net_wark_adapter_info.Text = tb_net_wark_adapter_info.Text + ("Description information:" + ) + "\n";
        tb_net_wark_adapter_info.Text = tb_net_wark_adapter_info.Text + ("type:" + ) + "\n";
        tb_net_wark_adapter_info.Text = tb_net_wark_adapter_info.Text + ("speed:" +  / 1000 / 1000 + "MB") + "\n";
        tb_net_wark_adapter_info.Text = tb_net_wark_adapter_info.Text + ("MAC Address:" + ()) + "\n";
        //Get IPInterfaceProperties instance        IPInterfaceProperties adapterProperties = ();
        //Get and display DNS server IP address information        IPAddressCollection dnsServers = ;
        if ( &gt; 0) {
            foreach (IPAddress dns in dnsServers) {
                tb_net_wark_adapter_info.Text = tb_net_wark_adapter_info.Text + ("DNS server IP address:" + dns + "\n");
            }
        } else {
            tb_net_wark_adapter_info.Text = tb_net_wark_adapter_info.Text + ("DNS server IP address:" + "\n");
        }
    }
}

Sample results

--------------------------------------------------------------------------------------------------------------------------------
Description information: Ethernet
Type: Ethernet
Speed: 0MB
MAC address: 9883892C3E84
DNS server IP address: 192.168.0.0
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Description: VirtualBox Host-Only Network #3
Type: Ethernet
Speed: 1000MB
MAC address: 0A002700000B
DNS server IP address: fec0:0:0:ffff::1%1
DNS server IP address: fec0:0:0:ffff::2%1
DNS server IP address: fec0:0:0:ffff::3%1

10. Sound card information

1. Sound card PNPDeviceID

public static string getSoundPNPID() {
    string st = "";
    ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * from Win32_SoundDevice");
    foreach (ManagementObject mo in ()) {
        st = mo["PNPDeviceID"].ToString();
    }
    return st;
}

11. Other information

1. Number of mouse buttons

public static string getMouseButtons()  {
    return ();
}

12. Network information

1. Network connection

public static string getIsHasNet() {
    if () {
        return  "Network Connection: Connected";
    } else {
        return "Network connection: Not connected";
    }
}

2. IP address

public static string getIP() {
    try {
		string st = "";
		ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
		ManagementObjectCollection moc = ();
		foreach (ManagementObject mo in moc) {
			if ((bool)mo["IPEnabled"] == true) {
				 ar;
				ar = ()(["IpAddress"].Value);
				st = (0).ToString();
				break;
			}
		}
		moc = null;
		mc = null;
		return st;
    } catch {
		return "unknow";
    }
}

The above is the detailed content of the sample code for obtaining computer information in C#. For more information about obtaining computer information in C#, please pay attention to my other related articles!