C# 计算机硬件信息 源代码
C# 计算机硬件信息 源代码
//可以利用 System.Management 类来获取硬件信息,Computer System Hardware Classes 包括以下类型硬件: //https://msdn.microsoft.com/en-us/library/windows/desktop/aa389273(v=vs.140).aspx //参考以下程序: //http://www.codeproject.com/Articles/17973/How-To-Get-Hardware-Information-CPU-ID-MainBoard-I using System; using System.Drawing; using System.Text; using System.Windows.Forms; // 需要手工在“解决方案资源管理器”下的“引用”中添加 "System.ServiceProcess" using System.Management; namespace HardwareInfo { public partial class Form1 : Form { public Form1() { InitializeComponent(); cmbxOption.SelectedItem = "Win32_Processor"; } private void InsertInfo(string Key, bool DontInsertNull) { ListView lst = lstInfo; lst.Items.Clear(); // foreach (var obj in new ManagementClass(Key).GetInstances()) // foreach (var myProperty in new ManagementClass(Key).Properties) // Console.WriteLine("{0}: {1}", myProperty.Name, obj.Properties[myProperty.Name].Value); // Console.WriteLine(); ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from " + Key); try { foreach (ManagementObject share in searcher.Get()) { ListViewGroup grp; try { grp = lst.Groups.Add(share["Name"].ToString(), share["Name"].ToString()); } catch { grp = lst.Groups.Add(share.ToString(), share.ToString()); } if (share.Properties.Count <= 0) { MessageBox.Show("没有可用的信息", "没有信息", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } foreach (PropertyData PC in share.Properties) { ListViewItem item = new ListViewItem(grp); if (lst.Items.Count % 2 != 0) item.BackColor = Color.White; else item.BackColor = Color.WhiteSmoke; item.Text = PC.Name; if (PC.Value != null && PC.Value.ToString() != "") { switch (PC.Value.GetType().ToString()) { case "System.String[]": string[] str = (string[])PC.Value; string str2 = ""; foreach (string st in str) str2 += st + " "; item.SubItems.Add(str2); break; case "System.UInt16[]": ushort[] shortData = (ushort[])PC.Value; string tstr2 = ""; foreach (ushort st in shortData) tstr2 += st.ToString() + " "; item.SubItems.Add(tstr2); break; default: item.SubItems.Add(PC.Value.ToString()); break; } } else { if (!DontInsertNull) item.SubItems.Add("没有可用的信息"); else continue; } lst.Items.Add(item); } } } catch (Exception exp) { MessageBox.Show("因为以下错误,不能获得数据\n" + exp.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void RemoveNullValue(ref ListView lst) { foreach (ListViewItem item in lst.Items) if (item.SubItems[1].Text == "没有可用的信息") item.Remove(); } private void cmbxOption_SelectedIndexChanged(object sender, EventArgs e) { InsertInfo(cmbxOption.SelectedItem.ToString(), chkOption.Checked); } private void chkOption_CheckedChanged(object sender, EventArgs e) { if (chkOption.Checked) RemoveNullValue(ref lstInfo); else InsertInfo(cmbxOption.SelectedItem.ToString(), false); } //参考以下程序: //https://computerid.codeplex.com/releases/view/13145 private void btnSummary_Click(object sender, EventArgs e) { StringBuilder generalInfo = new StringBuilder(2560); ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem"); foreach (ManagementObject wmi_Windows in searcher.Get()) generalInfo.Append("操作系统: " + wmi_Windows["Caption"].ToString() + " " + wmi_Windows["OSArchitecture"].ToString() + "\t" + "补丁版本: " + wmi_Windows["CSDVersion"].ToString() + "\n" + "用户名 : " + wmi_Windows["RegisteredUser"].ToString() + "\t\t" + "组织名 : " + wmi_Windows["Organization"].ToString() + "\t\t" + "描述 : " + wmi_Windows["Description"].ToString() + "\n"); generalInfo.Append("\n" + "硬件配置:\n" + "--------------------------------------------------------\n" + "CPU(s):\n"); searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Processor"); foreach (ManagementObject wmi_Cpu in searcher.Get()) generalInfo.Append("名称: " + wmi_Cpu["Name"].ToString() + "\t" + "时钟频率: " + wmi_Cpu["CurrentClockSpeed"].ToString() + "MHz" + "\n"); generalInfo.Append("\n" + "主板:\n"); float total_ram = 0; searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMemory"); foreach (ManagementObject wmi_myMotherboard in searcher.Get()) total_ram = total_ram + float.Parse(wmi_myMotherboard["Capacity"].ToString()); searcher = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard"); foreach (ManagementObject wmi_myMotherboard in searcher.Get()) generalInfo.Append("型号 : " + wmi_myMotherboard["Product"].ToString() + "\t\t" + "制造商 : " + wmi_myMotherboard["Manufacturer"].ToString() + "\n" + "内存容量: " + ((total_ram / 1024) / 1024).ToString() + " MB" + "\n"); generalInfo.Append("\n" + "硬盘:\n"); double TotalSize = 0, TotalSpaceLeft = 0; searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive"); foreach (ManagementObject wmi_HD in searcher.Get()) { TotalSize += double.Parse(wmi_HD["Size"].ToString()); generalInfo.Append(wmi_HD["Model"].ToString() + " " + Math.Round((((double.Parse(wmi_HD["Size"].ToString()) / 1024) / 1024) / 1024), 2) + " GB"); } searcher = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk"); foreach (ManagementObject wmi_HD in searcher.Get()) if (wmi_HD["FreeSpace"] != null) if (wmi_HD["DriveType"].ToString() == "3") TotalSpaceLeft += double.Parse(wmi_HD["FreeSpace"].ToString()); generalInfo.Append("\n" + "总容量 : " + Math.Round((((TotalSize / 1024) / 1024) / 1024), 2) + " GB" + "\t\t" + "可用空间: " + Math.Round(TotalSpaceLeft * 100 / TotalSize, 2) + "% (" + Math.Round(((((TotalSpaceLeft / 1024) / 1024)) / 1024), 2) + " GB)\n"); generalInfo.Append("\n" + "显卡:\n"); searcher = new ManagementObjectSearcher("SELECT * FROM Win32_VideoController"); foreach (ManagementObject wmi_myvideo in searcher.Get()) generalInfo.Append("名称 : " + wmi_myvideo["Name"].ToString() + "\t" + "显存 : " + (float.Parse(wmi_myvideo["AdapterRAM"].ToString()) / 1024 / 1024) + " MB \n" + "驱动版本: " + wmi_myvideo["DriverVersion"].ToString() + "\n"); generalInfo.Append("\n" + "网卡:\n"); searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled ='TRUE'"); foreach (ManagementObject wmi_NetWorkCard in searcher.Get()) { string[] tempIP = wmi_NetWorkCard["IPAddress"] as string[]; generalInfo.Append("名称 : " + wmi_NetWorkCard["Description"].ToString() + "\n" + "IP 地址 : " + tempIP[0].ToString() + "\t\t"); try { generalInfo.Append("本地地址: " + tempIP[1].ToString() + "\n"); } catch (Exception) { generalInfo.Append("本地地址: " + "\n"); } string defaultIPGateway = ""; try { string[] tempIPGateway; tempIPGateway = wmi_NetWorkCard["DefaultIPGateway"] as string[]; foreach (string x in tempIPGateway) { defaultIPGateway += x + ","; } tempIPGateway = null; } catch (Exception ex) { // MessageBox.Show(ex.ToString()); } if (defaultIPGateway.ToString() != string.Empty) generalInfo.Append("默认网关: " + defaultIPGateway.ToString() + "\n\n"); else generalInfo.Append("\n"); } MessageBox.Show(generalInfo.ToString(), "常用信息", MessageBoxButtons.OK); } } }
浙公网安备 33010602011771号