MachineInfo.cs 12 KB

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