C#获取计算机硬件与操作系统的相关信息

1. 硬件信息

1.1 获取CPU信息

使用C#可以通过System.Management命名空间下的ManagementObject类获取计算机的硬件信息。首先,需要添加System.Management命名空间的引用。

using System.Management;

然后,可以通过以下代码来获取CPU的信息:

ManagementClass managementClass = new ManagementClass("Win32_Processor");

ManagementObjectCollection managementObjects = managementClass.GetInstances();

foreach (ManagementObject managementObject in managementObjects)

{

string name = managementObject["Name"].ToString();

string manufacturer = managementObject["Manufacturer"].ToString();

string numberOfCores = managementObject["NumberOfCores"].ToString();

Console.WriteLine("CPU名称:" + name);

Console.WriteLine("制造商:" + manufacturer);

Console.WriteLine("核心数量:" + numberOfCores);

}

其中,ManagementClass("Win32_Processor")表示获取Win32_Processor类的实例,通过遍历ManagementObjectCollection获取每个CPU实例的属性值,包括名称、制造商和核心数量。

1.2 获取内存信息

可以通过以下代码来获取计算机的内存信息:

ManagementClass managementClass = new ManagementClass("Win32_PhysicalMemory");

ManagementObjectCollection managementObjects = managementClass.GetInstances();

foreach (ManagementObject managementObject in managementObjects)

{

string capacity = managementObject["Capacity"].ToString();

string manufacturer = managementObject["Manufacturer"].ToString();

string speed = managementObject["Speed"].ToString();

Console.WriteLine("容量:" + capacity);

Console.WriteLine("制造商:" + manufacturer);

Console.WriteLine("速度:" + speed);

}

同样地,使用ManagementClass("Win32_PhysicalMemory")获取实例,并遍历获取内存实例的属性值,包括容量、制造商和速度。

2. 操作系统信息

2.1 获取操作系统版本信息

可以通过以下代码来获取操作系统的版本信息:

ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");

ManagementObjectCollection managementObjects = managementObjectSearcher.Get();

foreach (ManagementObject managementObject in managementObjects)

{

string name = managementObject["Name"].ToString();

string version = managementObject["Version"].ToString();

string architecture = managementObject["OSArchitecture"].ToString();

Console.WriteLine("操作系统名称:" + name);

Console.WriteLine("版本:" + version);

Console.WriteLine("架构:" + architecture);

}

使用ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem")查询Win32_OperatingSystem类的实例,获取操作系统实例的名称、版本和架构。

2.2 获取计算机的网络信息

可以通过以下代码来获取计算机的网络信息:

ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE'");

ManagementObjectCollection managementObjects = managementObjectSearcher.Get();

foreach (ManagementObject managementObject in managementObjects)

{

string ipAddress = managementObject["IPAddress"] != null ? string.Join(", ", (string[])managementObject["IPAddress"]) : "";

string macAddress = managementObject["MACAddress"].ToString();

Console.WriteLine("IP地址:" + ipAddress);

Console.WriteLine("MAC地址:" + macAddress);

}

使用ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE'")查询Win32_NetworkAdapterConfiguration类的实例,并判断IPEnabled属性是否为真,获取网络适配器实例的IP地址和MAC地址。

3. 总结

通过C#的System.Management命名空间,可以方便地获取计算机的硬件和操作系统信息。使用ManagementClass和ManagementObjectSearcher类可以查询相应的实例,然后通过遍历管理对象集合获取实例的属性值。这对于开发系统工具、监控应用程序和系统调试非常有用。

后端开发标签