C# c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存等
CIMWin32 WMI Providers
WMI是什么
Windows 管理规范(Windows Management Instrumentation)是一项核心的 Windows 管理技术;用户可以使用 WMI 管理本地和远程计算机。WMI通过编程和脚本语言为日常管理提供了一条连续一致的途径
功能
WMI 的功能还包括事件触发、远程调用、查询、查看、架构的用户扩展、指示、
· 在远程计算机器上启动一个进程。
· 设定一个在特定日期和时间运行的进程。
· 远程启动计算机。
· 获得本地或远程计算机的已安装程序列表。
· 查询本地或远程计算机的 Windows 事件日志。
作用范围
WMI 可用于所有基于Windows的应用程序,在企业应用程序和管理脚本中非常有用。
WMI的使用
通过编写脚本或应用程序从 WMI 获取数据
- 如果我们是C++程序员,我们可以通过COM技术直接与下层通信。
- 而脚本语言则要支持WMI Scripting API,间接与下层通信。
- 对于.net平台语言,则要使用System.Management域相关功能与下层通信。
C#中应用System.Management
c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存。等等。
通过WMI读取系统信息里的网卡MAC
using System; using System.Collections.Generic; using System.Linq; using System.Management; using System.Net; using System.Text; using System.Threading.Tasks; namespace LYFWPFUI.Help { internal static class MacLocation { /// <summary> /// 通过WMI读取系统信息里的网卡MAC /// </summary> /// <returns></returns> public static List<string> GetMacByWMI() { List<string> macs = new List<string>(); try { string mac = ""; ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if ((bool)mo["IPEnabled"]) { mac = mo["MacAddress"].ToString(); macs.Add(mac); } } moc = null; mc = null; } catch { } return macs; } /// <summary> /// 获取网卡硬件地址 /// </summary> /// <returns></returns> public static string GetComputerUserName() { try { string st = ""; ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { st = mo["UserName"].ToString(); } moc = null; mc = null; return st; } catch { return "unknow"; } finally { } } /// <summary> /// 获得客户端外网IP地址 /// </summary> /// <returns>IP地址</returns> public static string getClientInternetIPAddress() { string internetAddress = ""; try { using (WebClient webClient = new WebClient()) { internetAddress = webClient.DownloadString("http://www.coridc.com/ip");//从外部网页获得IP地址 //判断IP是否合法 if (!System.Text.RegularExpressions.Regex.IsMatch(internetAddress, "[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}")) { internetAddress = webClient.DownloadString("http://fw.qq.com/ipaddress");//从腾讯提供的API中获得IP地址 } } return "外网IP地址:" + internetAddress; } catch { return "外网IP地址:unknown"; } finally { } } /// <summary> /// //获取硬盘ID /// </summary> /// <returns></returns> public static string GetDiskID() { try { String HDid = ""; ManagementClass mc = new ManagementClass("Win32_DiskDrive"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { //HDid =(string)mo.Properties["Model"].ToString(); HDid = (String)mo.Properties["Model"].Value.ToString(); } moc = null; mc = null; return HDid; } catch { return "unknow"; } finally { } } /// <summary> /// 获取CPUid /// </summary> /// <returns></returns> public static string GetCpuID() { try { //获取CPU序列号代码 string cpuInfo = "";//cpu序列号 ManagementClass mc = new ManagementClass("Win32_Processor"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { cpuInfo = mo.Properties["ProcessorId"].Value.ToString(); } moc = null; mc = null; return cpuInfo; } catch { return "unknow"; } finally { } } /// <summary> /// 系统名称 /// </summary> /// <returns></returns> public static string GetSystemType() { try { string st = ""; ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { st = mo["SystemType"].ToString(); } moc = null; mc = null; return st; } catch { return "unknow"; } finally { } } } }
编程是个人爱好