我们在利用C#开发桌面程序(Winform)程序的时候,经常需要获取一些跟系统相关的信息,例如用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存等。

首先需要引入命名空间:

  1. using System.Management;
  1. /// 获取本机用户名、MAC地址、内网IP地址、公网IP地址、硬盘ID、CPU序列号、系统名称、物理内存。
  2. /// </summary>
  3. public class GetSystemInfo
  4. {
  5. /// <summary>
  6. /// 操作系统的登录用户名
  7. /// </summary>
  8. /// <returns>系统的登录用户名</returns>
  9. public static string GetUserName()
  10. {
  11. try
  12. {
  13. string strUserName = string.Empty;
  14. ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
  15. ManagementObjectCollection moc = mc.GetInstances();
  16. foreach (ManagementObject mo in moc)
  17. {
  18. strUserName = mo["UserName"].ToString();
  19. }
  20. moc = null;
  21. mc = null;
  22. return strUserName;
  23. }
  24. catch
  25. {
  26. return "unknown";
  27. }
  28. }
  29. /// <summary>
  30. /// 获取本机MAC地址
  31. /// </summary>
  32. /// <returns>本机MAC地址</returns>
  33. public static string GetMacAddress()
  34. {
  35. try
  36. {
  37. string strMac = string.Empty;
  38. ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
  39. ManagementObjectCollection moc = mc.GetInstances();
  40. foreach (ManagementObject mo in moc)
  41. {
  42. if ((bool)mo["IPEnabled"] == true)
  43. {
  44. strMac = mo["MacAddress"].ToString();
  45. }
  46. }
  47. moc = null;
  48. mc = null;
  49. return strMac;
  50. }
  51. catch
  52. {
  53. return "unknown";
  54. }
  55. }
  56. /// <summary>
  57. /// 获取本机的物理地址
  58. /// </summary>
  59. /// <returns></returns>
  60. public static string getMacAddr_Local()
  61. {
  62. string madAddr = null;
  63. try
  64. {
  65. ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
  66. ManagementObjectCollection moc2 = mc.GetInstances();
  67. foreach (ManagementObject mo in moc2)
  68. {
  69. if (Convert.ToBoolean(mo["IPEnabled"]) == true)
  70. {
  71. madAddr = mo["MacAddress"].ToString();
  72. madAddr = madAddr.Replace(':', '-');
  73. }
  74. mo.Dispose();
  75. }
  76. if (madAddr == null)
  77. {
  78. return "unknown";
  79. }
  80. else
  81. {
  82. return madAddr;
  83. }
  84. }
  85. catch (Exception)
  86. {
  87. return "unknown";
  88. }
  89. }
  90. /// <summary>
  91. /// 获取客户端内网IPv6地址
  92. /// </summary>
  93. /// <returns>客户端内网IPv6地址</returns>
  94. public static string GetClientLocalIPv6Address()
  95. {
  96. string strLocalIP = string.Empty;
  97. try
  98. {
  99. IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
  100. IPAddress ipAddress = ipHost.AddressList[0];
  101. strLocalIP = ipAddress.ToString();
  102. return strLocalIP;
  103. }
  104. catch
  105. {
  106. return "unknown";
  107. }
  108. }
  109. /// <summary>
  110. /// 获取客户端内网IPv4地址
  111. /// </summary>
  112. /// <returns>客户端内网IPv4地址</returns>
  113. public static string GetClientLocalIPv4Address()
  114. {
  115. string strLocalIP = string.Empty;
  116. try
  117. {
  118. IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName());
  119. IPAddress ipAddress = ipHost.AddressList[0];
  120. strLocalIP = ipAddress.ToString();
  121. return strLocalIP;
  122. }
  123. catch
  124. {
  125. return "unknown";
  126. }
  127. }
  128. /// <summary>
  129. /// 获取客户端内网IPv4地址集合
  130. /// </summary>
  131. /// <returns>返回客户端内网IPv4地址集合</returns>
  132. public static List<string> GetClientLocalIPv4AddressList()
  133. {
  134. List<string> ipAddressList = new List<string>();
  135. try
  136. {
  137. IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName());
  138. foreach (IPAddress ipAddress in ipHost.AddressList)
  139. {
  140. if (!ipAddressList.Contains(ipAddress.ToString()))
  141. {
  142. ipAddressList.Add(ipAddress.ToString());
  143. }
  144. }
  145. }
  146. catch
  147. {
  148. }
  149. return ipAddressList;
  150. }
  151. /// <summary>
  152. /// 获取客户端外网IP地址
  153. /// </summary>
  154. /// <returns>客户端外网IP地址</returns>
  155. public static string GetClientInternetIPAddress()
  156. {
  157. string strInternetIPAddress = string.Empty;
  158. try
  159. {
  160. using (WebClient webClient = new WebClient())
  161. {
  162. strInternetIPAddress = webClient.DownloadString("http://www.coridc.com/ip");
  163. Regex r = new Regex("[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}");
  164. Match mth = r.Match(strInternetIPAddress);
  165. if (!mth.Success)
  166. {
  167. strInternetIPAddress = GetClientInternetIPAddress2();
  168. mth = r.Match(strInternetIPAddress);
  169. if (!mth.Success)
  170. {
  171. strInternetIPAddress = "unknown";
  172. }
  173. }
  174. return strInternetIPAddress;
  175. }
  176. }
  177. catch
  178. {
  179. return "unknown";
  180. }
  181. }
  182. /// <summary>
  183. /// 获取本机公网IP地址
  184. /// </summary>
  185. /// <returns>本机公网IP地址</returns>
  186. private static string GetClientInternetIPAddress2()
  187. {
  188. string tempip = "";
  189. try
  190. {
  191. //http://iframe.ip138.com/ic.asp 返回的是:您的IP是:[220.231.17.99] 来自:北京市 光环新网
  192. WebRequest wr = WebRequest.Create("http://iframe.ip138.com/ic.asp");
  193. Stream s = wr.GetResponse().GetResponseStream();
  194. StreamReader sr = new StreamReader(s, Encoding.Default);
  195. string all = sr.ReadToEnd(); //读取网站的数据
  196. int start = all.IndexOf("[") + 1;
  197. int end = all.IndexOf("]", start);
  198. tempip = all.Substring(start, end - start);
  199. sr.Close();
  200. s.Close();
  201. return tempip;
  202. }
  203. catch
  204. {
  205. return "unknown";
  206. }
  207. }
  208. /// <summary>
  209. /// 获取硬盘序号
  210. /// </summary>
  211. /// <returns>硬盘序号</returns>
  212. public static string GetDiskID()
  213. {
  214. try
  215. {
  216. string strDiskID = string.Empty;
  217. ManagementClass mc = new ManagementClass("Win32_DiskDrive");
  218. ManagementObjectCollection moc = mc.GetInstances();
  219. foreach (ManagementObject mo in moc)
  220. {
  221. strDiskID = mo.Properties["Model"].Value.ToString();
  222. }
  223. moc = null;
  224. mc = null;
  225. return strDiskID;
  226. }
  227. catch
  228. {
  229. return "unknown";
  230. }
  231. }
  232. /// <summary>
  233. /// 获取CpuID
  234. /// </summary>
  235. /// <returns>CpuID</returns>
  236. public static string GetCpuID()
  237. {
  238. try
  239. {
  240. string strCpuID = string.Empty;
  241. ManagementClass mc = new ManagementClass("Win32_Processor");
  242. ManagementObjectCollection moc = mc.GetInstances();
  243. foreach (ManagementObject mo in moc)
  244. {
  245. strCpuID = mo.Properties["ProcessorId"].Value.ToString();
  246. }
  247. moc = null;
  248. mc = null;
  249. return strCpuID;
  250. }
  251. catch
  252. {
  253. return "unknown";
  254. }
  255. }
  256. /// <summary>
  257. /// 获取操作系统类型
  258. /// </summary>
  259. /// <returns>操作系统类型</returns>
  260. public static string GetSystemType()
  261. {
  262. try
  263. {
  264. string strSystemType = string.Empty;
  265. ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
  266. ManagementObjectCollection moc = mc.GetInstances();
  267. foreach (ManagementObject mo in moc)
  268. {
  269. strSystemType = mo["SystemType"].ToString();
  270. }
  271. moc = null;
  272. mc = null;
  273. return strSystemType;
  274. }
  275. catch
  276. {
  277. return "unknown";
  278. }
  279. }
  280. /// <summary>
  281. /// 获取操作系统名称
  282. /// </summary>
  283. /// <returns>操作系统名称</returns>
  284. public static string GetSystemName()
  285. {
  286. try
  287. {
  288. string strSystemName = string.Empty;
  289. ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT PartComponent FROM Win32_SystemOperatingSystem");
  290. foreach (ManagementObject mo in mos.Get())
  291. {
  292. strSystemName = mo["PartComponent"].ToString();
  293. }
  294. mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT Caption FROM Win32_OperatingSystem");
  295. foreach (ManagementObject mo in mos.Get())
  296. {
  297. strSystemName = mo["Caption"].ToString();
  298. }
  299. return strSystemName;
  300. }
  301. catch
  302. {
  303. return "unknown";
  304. }
  305. }
  306. /// <summary>
  307. /// 获取物理内存信息
  308. /// </summary>
  309. /// <returns>物理内存信息</returns>
  310. public static string GetTotalPhysicalMemory()
  311. {
  312. try
  313. {
  314. string strTotalPhysicalMemory = string.Empty;
  315. ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
  316. ManagementObjectCollection moc = mc.GetInstances();
  317. foreach (ManagementObject mo in moc)
  318. {
  319. strTotalPhysicalMemory = mo["TotalPhysicalMemory"].ToString();
  320. }
  321. moc = null;
  322. mc = null;
  323. return strTotalPhysicalMemory;
  324. }
  325. catch
  326. {
  327. return "unknown";
  328. }
  329. }
  330. /// <summary>
  331. /// 获取主板id
  332. /// </summary>
  333. /// <returns></returns>
  334. public static string GetMotherBoardID()
  335. {
  336. try
  337. {
  338. ManagementClass mc = new ManagementClass("Win32_BaseBoard");
  339. ManagementObjectCollection moc = mc.GetInstances();
  340. string strID = null;
  341. foreach (ManagementObject mo in moc)
  342. {
  343. strID = mo.Properties["SerialNumber"].Value.ToString();
  344. break;
  345. }
  346. return strID;
  347. }
  348. catch
  349. {
  350. return "unknown";
  351. }
  352. }
  353. /// <summary>
  354. /// 获取公用桌面路径
  1. public static string GetAllUsersDesktopFolderPath()
  2. {
  3. RegistryKey folders;
  4. folders = OpenRegistryPath(Registry.LocalMachine, @"/software/microsoft/windows/currentversion/explorer/shell folders");
  5. string desktopPath = folders.GetValue("Common Desktop").ToString();
  6. return desktopPath;
  7. }
  8. /// <summary>
  9. /// 获取公用启动项路径
  10. /// </summary>
  11. public static string GetAllUsersStartupFolderPath()
  12. {
  13. RegistryKey folders;
  14. folders = OpenRegistryPath(Registry.LocalMachine, @"/software/microsoft/windows/currentversion/explorer/shell folders");
  15. string Startup = folders.GetValue("Common Startup").ToString();
  16. return Startup;
  17. }
  18. private static RegistryKey OpenRegistryPath(RegistryKey root, string s)
  19. {
  20. s = s.Remove(0, 1) + @"/";
  21. while (s.IndexOf(@"/") != -1)
  22. {
  23. root = root.OpenSubKey(s.Substring(0, s.IndexOf(@"/")));
  24. s = s.Remove(0, s.IndexOf(@"/") + 1);
  25. }
  26. return root;
  27. }
  1. private void Test()
  2. {
  3. RegistryKey folders;
  4. folders = OpenRegistryPath(Registry.LocalMachine, @"/software/microsoft/windows/currentversion/explorer/shell folders");
  5. // Windows用户桌面路径
  6. string desktopPath = folders.GetValue("Common Desktop").ToString();
  7. // Windows用户字体目录路径
  8. string fontsPath = folders.GetValue("Fonts").ToString();
  9. // Windows用户网络邻居路径
  10. string nethoodPath = folders.GetValue("Nethood").ToString();
  11. // Windows用户我的文档路径
  12. string personalPath = folders.GetValue("Personal").ToString();
  13. // Windows用户开始菜单程序路径
  14. string programsPath = folders.GetValue("Programs").ToString();
  15. // Windows用户存放用户最近访问文档快捷方式的目录路径
  16. string recentPath = folders.GetValue("Recent").ToString();
  17. // Windows用户发送到目录路径
  18. string sendtoPath = folders.GetValue("Sendto").ToString();
  19. // Windows用户开始菜单目录路径
  20. string startmenuPath = folders.GetValue("Startmenu").ToString();
  21. // Windows用户开始菜单启动项目录路径
  22. string startupPath = folders.GetValue("Startup").ToString();
  23. // Windows用户收藏夹目录路径
  24. string favoritesPath = folders.GetValue("Favorites").ToString();
  25. // Windows用户网页历史目录路径
  26. string historyPath = folders.GetValue("History").ToString();
  27. // Windows用户Cookies目录路径
  28. string cookiesPath = folders.GetValue("Cookies").ToString();
  29. // Windows用户Cache目录路径
  30. string cachePath = folders.GetValue("Cache").ToString();
  31. // Windows用户应用程式数据目录路径
  32. string appdataPath = folders.GetValue("Appdata").ToString();
  33. // Windows用户打印目录路径
  34. string printhoodPath = folders.GetValue("Printhood").ToString();
  35. }</span>

来自小勇.NET博客:http://blog.csdn.net/xiaoyong_net



 
 

版权声明:本文为云勇原创文章,转载请注明来源于云勇博客

c#中如何获取本机MAC地址、IP地址、硬盘ID、CPU序列号等系统信息的更多相关文章

  1. js获取本机的网络IP地址

    JavaScript是一门脚本语言,是不能操作文件,读取本地信息的,所以想要获取IP,还需要借助后端技术.方法如下: //获取本机的网络ip地址 function jsonpCallback(res) ...

  2. LabVIEW 获取本机多个ip地址

    图 1   网上见了好多设置的,都没讲清楚,在这里整理一下本机ip地址的获取问题.关键在"字符串向ip地址转换"函数的设置上面,见下图2,选择多输出就能获取本机的多个ip地址,若不 ...

  3. C# 获取本机的所有ip地址,并过滤内网ip

    private void Initialization_Load(object sender, EventArgs e) { cboxip.Items.Add("请选择IP地址") ...

  4. c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存

    我们在利用C#开发桌面程序(Winform)程序的时候, 经常需要获取一些跟系统相关的信息, 以下这些代码获取能有些用处. c#中如何获取本机用户名.MAC地址.IP地址.硬盘ID.CPU序列号.系统 ...

  5. java获取本机名称、IP、MAC地址和网卡名称

    java获取本机名称.IP.MAC地址和网卡名称 摘自:https://blog.csdn.net/Dai_Haijiao/article/details/80364370 2018年05月18日 1 ...

  6. 脚本_获取本机 MAC 地址

    #!bin/bash#作者:liusingbon#功能:获取本机 MAC 地址ip a s |awk 'BEGIN{print "本机 MAC 地址信息如下:"}/^[0-9]/{ ...

  7. js获取本机mac地址,IP地址,计算机名

    <!DOCTYPE HTML> <html> <head> <title>js获取本机mac地址,IP地址,计算机名</title> < ...

  8. windows获取本机MAC地址并写入文件的bat

    windows获取本机MAC地址并写入文件的bat MAC(Media Access Control)地址,或称为 MAC地址.硬件地址,用来定义网络设备的位置. bat代码例如以下: @echo o ...

  9. Java获取本机MAC地址[转]

    原文地址:https://www.cnblogs.com/hxsyl/p/3422191.html Java获取本机MAC地址   为什么写这个呢?因为前几天看见网上有采用windows命令获取局域网 ...

随机推荐

  1. AOJ2025 Eight Princes

    我们查看更一般的情况,设人数为m 则n < m * 2无解 然后n为奇数的情况: 我们把一个人和一个空格打包,于是剩下m个"人"和n - m个空格,随便排列这些"人 ...

  2. POJ 1008 简单模拟题

    e.... 虽然这是一道灰常简单的模拟题.但是米做的时候没有读懂第二个日历的计时方法.然后捏.敲完之后华丽的WA了进一个点.坑点就在一年的最后一天你是该输出本年的.e ...但是我好想并没有..看di ...

  3. 北邮新生排位赛2解题报告d-e

    <> 427. 学姐逗学弟 时间限制 3000 ms 内存限制 131072 KB 题目描述 学弟们来了之后,学姐每天都非常高兴的和学弟一起玩耍.这一天,学姐想出了这样一个游戏,她画了一棵 ...

  4. AnsiStartsStr 和 空字符串

    function AnsiStartsStr(const ASubText, AText: string): Boolean; begin Result := AnsiSameStr(ASubText ...

  5. selenium(一)简介,安装,配置,测试。

    简介: Selenium也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozilla Firefox.Mozilla S ...

  6. docker(一)安装和必要的配置。

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  7. 元素大小-偏移量(offset)客户区大小(client)滚动大小(scroll)

    一.偏移量---offset 1.定位父级 在理解偏移大小之前,首先要理解offsetParent.人们并没有把offsetParent翻译为偏移父级,而是翻译成定位父级,很大原因是offsetPar ...

  8. http请求报头

    客户请求的处理:Http请求报头 创建高效servlet的关键之一,就是要了解如何操纵超文本传输协议(HypeText TransferProtocol, HTTP). HTTP请求报头不同于前一章的 ...

  9. 深入理解Linux网络技术内幕——网络设备初始化

    概述    内核的初始化过程过程中,与网络相关的工作如下所示:     内核引导时执行start_kernel,start_kernel结束之前会调用rest_init,rest_init初始化内核线 ...

  10. Linux:查看进程运行时间

    查看进程运行时间 应用ps命令,加选项-Ao,加参数,最后过滤. ps -Ao pid,tty,user,stime,etime,comm,args| grep firefox pid:进程ID tt ...