CNAS取数仪器端升级
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

84 строки
2.7KB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Management;
  5. using System.Net.NetworkInformation;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace CnasSynchronousCommon
  9. {
  10. public class MachieCodeHelper
  11. {
  12. public static string GetMachineCode()
  13. {
  14. StringBuilder machineCode = new StringBuilder();
  15. // 获取CPU ID
  16. string cpuId = GetCPUId();
  17. machineCode.Append(cpuId);
  18. // 获取所有MAC地址
  19. List<string> macAddresses = GetMACAddresses();
  20. foreach (string mac in macAddresses)
  21. {
  22. machineCode.Append("_").Append(mac);
  23. }
  24. return machineCode.ToString();
  25. }
  26. private static string GetCPUId()
  27. {
  28. try
  29. {
  30. using (ManagementClass mc = new ManagementClass("Win32_Processor"))
  31. {
  32. ManagementObjectCollection moc = mc.GetInstances();
  33. foreach (ManagementObject mo in moc)
  34. {
  35. return mo.Properties["ProcessorId"].Value.ToString();
  36. }
  37. }
  38. }
  39. catch (Exception ex)
  40. {
  41. throw new Exception("获取CPU ID失败: " + ex.Message);
  42. }
  43. return string.Empty;
  44. }
  45. private static List<string> GetMACAddresses()
  46. {
  47. List<string> macAddresses = new List<string>();
  48. try
  49. {
  50. NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
  51. // 优先选择以太网卡
  52. var ethernetAdapter = nics.FirstOrDefault(adapter =>
  53. adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet &&
  54. !string.IsNullOrEmpty(adapter.GetPhysicalAddress().ToString()));
  55. // 如果没有以太网卡,则选择无线网卡
  56. var selectedAdapter = ethernetAdapter ?? nics.FirstOrDefault(adapter =>
  57. adapter.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 &&
  58. !string.IsNullOrEmpty(adapter.GetPhysicalAddress().ToString()));
  59. if (selectedAdapter != null)
  60. {
  61. string mac = selectedAdapter.GetPhysicalAddress().ToString();
  62. if (!string.IsNullOrEmpty(mac))
  63. {
  64. macAddresses.Add(mac);
  65. }
  66. }
  67. }
  68. catch (Exception ex)
  69. {
  70. throw new Exception("获取MAC地址失败: " + ex.Message);
  71. }
  72. return macAddresses;
  73. }
  74. }
  75. }