c#中如何获取本机MAC地址、IP地址、硬盘ID、CPU序列号等系统信息
-
我们在利用C#开发桌面程序(Winform)程序的时候,经常需要获取一些跟系统相关的信息,例如用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存等。
首先需要引入命名空间:
- using System.Management;
- /// 获取本机用户名、MAC地址、内网IP地址、公网IP地址、硬盘ID、CPU序列号、系统名称、物理内存。
- /// </summary>
- public class GetSystemInfo
- {
- /// <summary>
- /// 操作系统的登录用户名
- /// </summary>
- /// <returns>系统的登录用户名</returns>
- public static string GetUserName()
- {
- try
- {
- string strUserName = string.Empty;
- ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
- ManagementObjectCollection moc = mc.GetInstances();
- foreach (ManagementObject mo in moc)
- {
- strUserName = mo["UserName"].ToString();
- }
- moc = null;
- mc = null;
- return strUserName;
- }
- catch
- {
- return "unknown";
- }
- }
- /// <summary>
- /// 获取本机MAC地址
- /// </summary>
- /// <returns>本机MAC地址</returns>
- public static string GetMacAddress()
- {
- try
- {
- string strMac = string.Empty;
- ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
- ManagementObjectCollection moc = mc.GetInstances();
- foreach (ManagementObject mo in moc)
- {
- if ((bool)mo["IPEnabled"] == true)
- {
- strMac = mo["MacAddress"].ToString();
- }
- }
- moc = null;
- mc = null;
- return strMac;
- }
- catch
- {
- return "unknown";
- }
- }
- /// <summary>
- /// 获取本机的物理地址
- /// </summary>
- /// <returns></returns>
- public static string getMacAddr_Local()
- {
- string madAddr = null;
- try
- {
- ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
- ManagementObjectCollection moc2 = mc.GetInstances();
- foreach (ManagementObject mo in moc2)
- {
- if (Convert.ToBoolean(mo["IPEnabled"]) == true)
- {
- madAddr = mo["MacAddress"].ToString();
- madAddr = madAddr.Replace(':', '-');
- }
- mo.Dispose();
- }
- if (madAddr == null)
- {
- return "unknown";
- }
- else
- {
- return madAddr;
- }
- }
- catch (Exception)
- {
- return "unknown";
- }
- }
- /// <summary>
- /// 获取客户端内网IPv6地址
- /// </summary>
- /// <returns>客户端内网IPv6地址</returns>
- public static string GetClientLocalIPv6Address()
- {
- string strLocalIP = string.Empty;
- try
- {
- IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
- IPAddress ipAddress = ipHost.AddressList[0];
- strLocalIP = ipAddress.ToString();
- return strLocalIP;
- }
- catch
- {
- return "unknown";
- }
- }
- /// <summary>
- /// 获取客户端内网IPv4地址
- /// </summary>
- /// <returns>客户端内网IPv4地址</returns>
- public static string GetClientLocalIPv4Address()
- {
- string strLocalIP = string.Empty;
- try
- {
- IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName());
- IPAddress ipAddress = ipHost.AddressList[0];
- strLocalIP = ipAddress.ToString();
- return strLocalIP;
- }
- catch
- {
- return "unknown";
- }
- }
- /// <summary>
- /// 获取客户端内网IPv4地址集合
- /// </summary>
- /// <returns>返回客户端内网IPv4地址集合</returns>
- public static List<string> GetClientLocalIPv4AddressList()
- {
- List<string> ipAddressList = new List<string>();
- try
- {
- IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName());
- foreach (IPAddress ipAddress in ipHost.AddressList)
- {
- if (!ipAddressList.Contains(ipAddress.ToString()))
- {
- ipAddressList.Add(ipAddress.ToString());
- }
- }
- }
- catch
- {
- }
- return ipAddressList;
- }
- /// <summary>
- /// 获取客户端外网IP地址
- /// </summary>
- /// <returns>客户端外网IP地址</returns>
- public static string GetClientInternetIPAddress()
- {
- string strInternetIPAddress = string.Empty;
- try
- {
- using (WebClient webClient = new WebClient())
- {
- strInternetIPAddress = webClient.DownloadString("http://www.coridc.com/ip");
- Regex r = new Regex("[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}");
- Match mth = r.Match(strInternetIPAddress);
- if (!mth.Success)
- {
- strInternetIPAddress = GetClientInternetIPAddress2();
- mth = r.Match(strInternetIPAddress);
- if (!mth.Success)
- {
- strInternetIPAddress = "unknown";
- }
- }
- return strInternetIPAddress;
- }
- }
- catch
- {
- return "unknown";
- }
- }
- /// <summary>
- /// 获取本机公网IP地址
- /// </summary>
- /// <returns>本机公网IP地址</returns>
- private static string GetClientInternetIPAddress2()
- {
- string tempip = "";
- try
- {
- //http://iframe.ip138.com/ic.asp 返回的是:您的IP是:[220.231.17.99] 来自:北京市 光环新网
- WebRequest wr = WebRequest.Create("http://iframe.ip138.com/ic.asp");
- Stream s = wr.GetResponse().GetResponseStream();
- StreamReader sr = new StreamReader(s, Encoding.Default);
- string all = sr.ReadToEnd(); //读取网站的数据
- int start = all.IndexOf("[") + 1;
- int end = all.IndexOf("]", start);
- tempip = all.Substring(start, end - start);
- sr.Close();
- s.Close();
- return tempip;
- }
- catch
- {
- return "unknown";
- }
- }
- /// <summary>
- /// 获取硬盘序号
- /// </summary>
- /// <returns>硬盘序号</returns>
- public static string GetDiskID()
- {
- try
- {
- string strDiskID = string.Empty;
- ManagementClass mc = new ManagementClass("Win32_DiskDrive");
- ManagementObjectCollection moc = mc.GetInstances();
- foreach (ManagementObject mo in moc)
- {
- strDiskID = mo.Properties["Model"].Value.ToString();
- }
- moc = null;
- mc = null;
- return strDiskID;
- }
- catch
- {
- return "unknown";
- }
- }
- /// <summary>
- /// 获取CpuID
- /// </summary>
- /// <returns>CpuID</returns>
- public static string GetCpuID()
- {
- try
- {
- string strCpuID = string.Empty;
- ManagementClass mc = new ManagementClass("Win32_Processor");
- ManagementObjectCollection moc = mc.GetInstances();
- foreach (ManagementObject mo in moc)
- {
- strCpuID = mo.Properties["ProcessorId"].Value.ToString();
- }
- moc = null;
- mc = null;
- return strCpuID;
- }
- catch
- {
- return "unknown";
- }
- }
- /// <summary>
- /// 获取操作系统类型
- /// </summary>
- /// <returns>操作系统类型</returns>
- public static string GetSystemType()
- {
- try
- {
- string strSystemType = string.Empty;
- ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
- ManagementObjectCollection moc = mc.GetInstances();
- foreach (ManagementObject mo in moc)
- {
- strSystemType = mo["SystemType"].ToString();
- }
- moc = null;
- mc = null;
- return strSystemType;
- }
- catch
- {
- return "unknown";
- }
- }
- /// <summary>
- /// 获取操作系统名称
- /// </summary>
- /// <returns>操作系统名称</returns>
- public static string GetSystemName()
- {
- try
- {
- string strSystemName = string.Empty;
- ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT PartComponent FROM Win32_SystemOperatingSystem");
- foreach (ManagementObject mo in mos.Get())
- {
- strSystemName = mo["PartComponent"].ToString();
- }
- mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT Caption FROM Win32_OperatingSystem");
- foreach (ManagementObject mo in mos.Get())
- {
- strSystemName = mo["Caption"].ToString();
- }
- return strSystemName;
- }
- catch
- {
- return "unknown";
- }
- }
- /// <summary>
- /// 获取物理内存信息
- /// </summary>
- /// <returns>物理内存信息</returns>
- public static string GetTotalPhysicalMemory()
- {
- try
- {
- string strTotalPhysicalMemory = string.Empty;
- ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
- ManagementObjectCollection moc = mc.GetInstances();
- foreach (ManagementObject mo in moc)
- {
- strTotalPhysicalMemory = mo["TotalPhysicalMemory"].ToString();
- }
- moc = null;
- mc = null;
- return strTotalPhysicalMemory;
- }
- catch
- {
- return "unknown";
- }
- }
- /// <summary>
- /// 获取主板id
- /// </summary>
- /// <returns></returns>
- public static string GetMotherBoardID()
- {
- try
- {
- ManagementClass mc = new ManagementClass("Win32_BaseBoard");
- ManagementObjectCollection moc = mc.GetInstances();
- string strID = null;
- foreach (ManagementObject mo in moc)
- {
- strID = mo.Properties["SerialNumber"].Value.ToString();
- break;
- }
- return strID;
- }
- catch
- {
- return "unknown";
- }
- }
- /// <summary>
- /// 获取公用桌面路径
- public static string GetAllUsersDesktopFolderPath()
- {
- RegistryKey folders;
- folders = OpenRegistryPath(Registry.LocalMachine, @"/software/microsoft/windows/currentversion/explorer/shell folders");
- string desktopPath = folders.GetValue("Common Desktop").ToString();
- return desktopPath;
- }
- /// <summary>
- /// 获取公用启动项路径
- /// </summary>
- public static string GetAllUsersStartupFolderPath()
- {
- RegistryKey folders;
- folders = OpenRegistryPath(Registry.LocalMachine, @"/software/microsoft/windows/currentversion/explorer/shell folders");
- string Startup = folders.GetValue("Common Startup").ToString();
- return Startup;
- }
- private static RegistryKey OpenRegistryPath(RegistryKey root, string s)
- {
- s = s.Remove(0, 1) + @"/";
- while (s.IndexOf(@"/") != -1)
- {
- root = root.OpenSubKey(s.Substring(0, s.IndexOf(@"/")));
- s = s.Remove(0, s.IndexOf(@"/") + 1);
- }
- return root;
- }
- private void Test()
- {
- RegistryKey folders;
- folders = OpenRegistryPath(Registry.LocalMachine, @"/software/microsoft/windows/currentversion/explorer/shell folders");
- // Windows用户桌面路径
- string desktopPath = folders.GetValue("Common Desktop").ToString();
- // Windows用户字体目录路径
- string fontsPath = folders.GetValue("Fonts").ToString();
- // Windows用户网络邻居路径
- string nethoodPath = folders.GetValue("Nethood").ToString();
- // Windows用户我的文档路径
- string personalPath = folders.GetValue("Personal").ToString();
- // Windows用户开始菜单程序路径
- string programsPath = folders.GetValue("Programs").ToString();
- // Windows用户存放用户最近访问文档快捷方式的目录路径
- string recentPath = folders.GetValue("Recent").ToString();
- // Windows用户发送到目录路径
- string sendtoPath = folders.GetValue("Sendto").ToString();
- // Windows用户开始菜单目录路径
- string startmenuPath = folders.GetValue("Startmenu").ToString();
- // Windows用户开始菜单启动项目录路径
- string startupPath = folders.GetValue("Startup").ToString();
- // Windows用户收藏夹目录路径
- string favoritesPath = folders.GetValue("Favorites").ToString();
- // Windows用户网页历史目录路径
- string historyPath = folders.GetValue("History").ToString();
- // Windows用户Cookies目录路径
- string cookiesPath = folders.GetValue("Cookies").ToString();
- // Windows用户Cache目录路径
- string cachePath = folders.GetValue("Cache").ToString();
- // Windows用户应用程式数据目录路径
- string appdataPath = folders.GetValue("Appdata").ToString();
- // Windows用户打印目录路径
- string printhoodPath = folders.GetValue("Printhood").ToString();
- }</span>
来自小勇.NET博客:http://blog.csdn.net/xiaoyong_net
版权声明:本文为云勇原创文章,转载请注明来源于云勇博客
c#中如何获取本机MAC地址、IP地址、硬盘ID、CPU序列号等系统信息的更多相关文章
- js获取本机的网络IP地址
JavaScript是一门脚本语言,是不能操作文件,读取本地信息的,所以想要获取IP,还需要借助后端技术.方法如下: //获取本机的网络ip地址 function jsonpCallback(res) ...
- LabVIEW 获取本机多个ip地址
图 1 网上见了好多设置的,都没讲清楚,在这里整理一下本机ip地址的获取问题.关键在"字符串向ip地址转换"函数的设置上面,见下图2,选择多输出就能获取本机的多个ip地址,若不 ...
- C# 获取本机的所有ip地址,并过滤内网ip
private void Initialization_Load(object sender, EventArgs e) { cboxip.Items.Add("请选择IP地址") ...
- c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存
我们在利用C#开发桌面程序(Winform)程序的时候, 经常需要获取一些跟系统相关的信息, 以下这些代码获取能有些用处. c#中如何获取本机用户名.MAC地址.IP地址.硬盘ID.CPU序列号.系统 ...
- java获取本机名称、IP、MAC地址和网卡名称
java获取本机名称.IP.MAC地址和网卡名称 摘自:https://blog.csdn.net/Dai_Haijiao/article/details/80364370 2018年05月18日 1 ...
- 脚本_获取本机 MAC 地址
#!bin/bash#作者:liusingbon#功能:获取本机 MAC 地址ip a s |awk 'BEGIN{print "本机 MAC 地址信息如下:"}/^[0-9]/{ ...
- js获取本机mac地址,IP地址,计算机名
<!DOCTYPE HTML> <html> <head> <title>js获取本机mac地址,IP地址,计算机名</title> < ...
- windows获取本机MAC地址并写入文件的bat
windows获取本机MAC地址并写入文件的bat MAC(Media Access Control)地址,或称为 MAC地址.硬件地址,用来定义网络设备的位置. bat代码例如以下: @echo o ...
- Java获取本机MAC地址[转]
原文地址:https://www.cnblogs.com/hxsyl/p/3422191.html Java获取本机MAC地址 为什么写这个呢?因为前几天看见网上有采用windows命令获取局域网 ...
随机推荐
- HTML绘制三角形的方法:
<!DOCTYPE html> <html> <body> <style> #triangle-up { width: 0px; height: 0px ...
- ZOJ 3829 Known Notation 贪心 难度:0
Known Notation Time Limit: 2 Seconds Memory Limit: 65536 KB Do you know reverse Polish notation ...
- $(function(){})与(function($){})(jquery)
$(function(){}) function中的代码在DOM加载完成后立即执行,比window.onload()更快,因为前者不需要等待图片加载完成. (function($){})(jquery ...
- 【设计模式】 模式PK:工厂模式VS建造者模式
1.概述 工厂方法模式注重的是整体对象的创建方法,而建造者模式注重的是部件构建的过程,旨在通过一步一步地精确构造创建出一个复杂的对象.我们举个简单例子来说明两者的差异,如要制造一个超人,如果使用工厂方 ...
- .Net EF Core数据库使用SQL server 2008 R2分页报错How to avoid the “Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement.”
一. 问题说明 最近.Net EF core 程序部署到服务器,服务器数据库安装的是SQL server 2008 R2,我本地用的的是SQL server 2014,在用到分页查询时报错如下: H ...
- vue 之 .$mount()
$mount():手动挂载 当Vue实例没有el属性时,则该实例尚没有挂载到某个dom中: 假如需要延迟挂载,可以在之后手动调用vm.$mount()方法来挂载.例如: <div id=&quo ...
- OpenCV-bwLabel-实现图像连通组件标记与分析
OpenCV实现图像连通组件标记与分析- matlab bwLabel; code: #include <opencv2/opencv.hpp> #include <iostream ...
- PR5
修改字幕的两种方式
- hdu1224 dp(dp + 栈/父亲数组记录路径)
题意:给定 n 个城市的有趣度,并给出可以从那些城市飞到那些城市.其中第一个城市即起始城市同样也作为终点城市,有趣度为 0,旅行途中只允许按有趣度从低到高旅行,问旅行的有趣度最大是多少,并输出旅行路径 ...
- 【JVM】jvm的jps命令
jps -- Java Virtual Machine Process Status Tool 可以列出本机所有java进程的pid jps [ options ] [ hostid ] 选项 -q ...