获取本机用户名、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>
/// 获取公用桌面路径         

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/448288.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

只用一套解决方案,就可解决80%的交通物流行业信息难题

行业背景 新中国成立70多年来&#xff0c;中国交通运输总体上已经形成了多节点、全覆盖的综合运输网络&#xff0c;“五纵五横”综合运输大通道基本贯通&#xff0c;一大批综合客运、货运枢纽站场&#xff08;物流园区&#xff09;投入运营&#xff0c;取得了一系列瞩目成果&am…

起步

什么是开车起步 起步&#xff0c;即发动汽车&#xff0c;使汽车开始走动。 操作方法 1、“踩”离合器 2、“挂”一档 3、“打”左转向灯&#xff08;提醒后车驾驶员注意安全避让&#xff09; 4、“鸣”号&#xff08;引起车辆周围的行人或机动车等注意&…

Linux 使用 jstat 命令查看 jvm 的 GC 情况

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Options&#xff0c;选项&#xff0c;我们一般使用 -gcutil 查看gc情况 vmid&#xff0c;VM的进程号&#xff0c;即当前运行的java进程号…

WKWebview加载本地图片时出现路径问题

出现问题情况是&#xff1a;将uiwebview换成wkwebview之后&#xff0c;之前将webview上那些图片放回本地下载后缓存的图片没办法在webview上找到&#xff0c;最后排查出原因是&#xff0c;wkwebview需要将图片和网页文件放在同个路径下。 具体实现方法如下(获取图片缓存的路径&…

上车准备

上车准备一 1、环视车辆、确保安全。 2、调整驾驶座。身体坐正&#xff0c;双手向前伸直&#xff0c;以手腕刚好能放在方向盘上为准。左脚搁在离合器上&#xff0c;右脚搁在刹车上&#xff0c;小腿和大腿成90度。左脚可以轻松把离合器踩到底。身体离方向盘20—25厘米。 …

C++复习

register关键字请求“编译器”将局部变量存储于寄存器中 C语言中无法取得register变量地址 在C中依然支持register关键字 1、C编译器有自己的优化方式&#xff0c;不使用register也可能做优化 2、C中可以取得register变量的地址 C编译器发现程序中需要取register变量的地址…

Docker 方式安装 Nginx 、阿里云服务器上装 Ngnix

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 非 Docker 方式安装&#xff0c;直接 Linux 安装见另一文&#xff1a;Linux 上 安装 nginx 、阿里云服务器上安装 nginx 1. 直接从镜像仓…

C#实现A*算法

理解A*寻路算法具体过程 这两天研究了下 A* 寻路算法, 主要学习了这篇文章, 但这篇翻译得不是很好, 我花了很久才看明白文章中的各种指代. 特写此篇博客用来总结, 并写了寻路算法的代码, 觉得有用的同学可以看看. 另外因为图片制作起来比较麻烦, 所以我用的是原文里的图片. 当…

路考口诀

路考口诀一 一踩&#xff08;踩离合&#xff09;、二挂&#xff08;挂一档&#xff09;、三看&#xff08;看倒车镜&#xff09;、四转&#xff08;转向灯&#xff09;、五按&#xff08;按喇叭&#xff09;、六手刹、七走 路考口诀二 01.路考之道很轻松&#xff0c;牢…

nfs服务器工作原理

https://www.cnblogs.com/me80/p/7464125.html转载于:https://www.cnblogs.com/huhuxixi/p/11203049.html

玩转数据结构——均摊复杂度和防止复杂度的震荡(笔记)

数据规模 时间复杂度 并不是所有的双层循环都是O&#xff08;n^2&#xff09;的 复杂度实验来确定复杂度 // O(N) 两倍增加 int findMax( int arr[], int n ){assert( n > 0 );int res arr[0];for( int i 1 ; i < n ; i )if( arr[i] > res )res arr[i];return res…

解决:bash: vim: command not found、docker 容器不识别 vi / vim 、docker 容器中安装 vim

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 在 Docker 容器中编辑文件&#xff0c;报错如下&#xff1a; bash: vim: command not found2. 安装 vim &#xff1a; apt-get in…

路考

路考基本项目组成 路考即是科目三&#xff0c;是新增加的一个考试项目&#xff0c;基本项目有13项&#xff0c;包括上车准备、起步、直线行驶、变更车道、通过路口、靠边停车、通过人行横道线、通过学校区域、通过公共汽车站、会车、超车、掉头、夜间行驶。 上车准备 …

OpenDDS通讯rtps_discovery对等发现模式的pub和sub匹配的日志

OpenDDS的通讯体系中&#xff0c;提供了丰富的日志输出&#xff0c;通过日志输出可以清晰的看到pub和sub方的主题匹配的过程&#xff0c;是加深对OpenDDS过程了解的一个好方法。 下面的日志&#xff0c;以OpenDDS3.8为基础&#xff0c;增加了部分日志和时间戳输出。 rtps_dis…

Developing Web Applications with Apache, MySQL, memcached, and Perl

Developing Web Applications with Apache, MySQL, memcached, and Perl转载于:https://www.cnblogs.com/gavinhughhu/archive/2009/11/02/1594290.html

awk 中 {print $1} 什么意思

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 举个例子 echo "aa bb cc" | awk -F {print $1} 结果就是aa&#xff0c;意思是把字符串按空格分割&#xff0c;取第一个。aw…

有驾照不等于会开车,教你开车技巧27招

当今有车的人真的是越来越多了&#xff0c;不要以为自己有驾照就是会开车了哦&#xff0c;其实开车还是有很多技巧的。下面就跟小编看下学会那些招数才真算会开车吧。 1、上车先看车 上车前绕车转一圈&#xff0c;看车的外况、轮胎、车底下有没有漏油漏水。一个星期还得揭开盖子…

OpenDDS通讯中rtps_discovery对等发现的基本配置和说明

OpenDDS的对等发现模式中&#xff0c;可以采用组播或单播方式进行发现和基于主题的DataReader和DataWriter的匹配&#xff0c;下面是一个简单的配置样例&#xff1a; [common] DCPSGlobalTransportConfig$file ORBDebugLevel0 DCPSDebugLevel3 DCPSTransportDebugLevel0 ORBLo…

用户使用协议

知乎协议&#xff08;草案&#xff09; 欢迎您来到知乎。 请您仔细阅读以下条款&#xff0c;如果您对本协议的任何条款表示异议&#xff0c;您可以选择不进入知乎。当您注册成功&#xff0c;无论是进入知乎&#xff0c;还是在知乎上发布任何内容&#xff08;即「内容」&#xf…

解决: bash: unzip: command not found、linux 安装 zip 命令

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 执行解压命令报错&#xff1a; bash: unzip: command not found 2. 安装 zip&#xff1a; yum install -y unzip zip 3. 重试成功…