平安校园
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 
 
 

58 行
2.3 KiB

  1. using Newtonsoft.Json;
  2. using System.Management;
  3. namespace SafeCampus.Core.Utils.Machine;
  4. public class MachineUtil : IMachineUtil
  5. {
  6. private readonly ISimpleCacheService _simpleCacheService;
  7. public MachineUtil(ISimpleCacheService simpleCacheService)
  8. {
  9. _simpleCacheService = simpleCacheService;
  10. }
  11. /// <summary>
  12. /// CPU码
  13. /// </summary>
  14. /// <returns></returns>
  15. public async Task<string> GetProcessorId()
  16. {
  17. var json = _simpleCacheService.Get<string>(BizConfigConst.BIZ_MACHINE_CPU);
  18. if (json != null) return json;
  19. using ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT ProcessorId FROM Win32_Processor");
  20. ManagementObjectCollection collection = searcher.Get();
  21. string processorId = collection.Cast<ManagementBaseObject>().First()["ProcessorId"].ToString();
  22. _simpleCacheService.Add(BizConfigConst.BIZ_MACHINE_CPU, processorId);
  23. return processorId;
  24. }
  25. /// <summary>
  26. /// 硬盘码
  27. /// </summary>
  28. /// <returns></returns>
  29. public async Task<string> GetDiskId()
  30. {
  31. var json = _simpleCacheService.Get<string>(BizConfigConst.BIZ_MACHINE_DISK);
  32. if (json != null) return json;
  33. using ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT SerialNumber FROM Win32_DiskDrive");
  34. ManagementObjectCollection collection = searcher.Get();
  35. string diskId = collection.Cast<ManagementBaseObject>().First()["SerialNumber"].ToString();
  36. _simpleCacheService.Add(BizConfigConst.BIZ_MACHINE_DISK, diskId);
  37. return diskId;
  38. }
  39. /// <summary>
  40. /// MAC地址
  41. /// </summary>
  42. /// <returns></returns>
  43. public async Task<string> GetMacAddress()
  44. {
  45. var json = _simpleCacheService.Get<string>(BizConfigConst.BIZ_MACHINE_MAC);
  46. if (json != null) return json;
  47. using ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT MACAddress FROM Win32_NetworkAdapter WHERE PhysicalAdapter=True");
  48. ManagementObjectCollection collection = searcher.Get();
  49. string macAddress = collection.Cast<ManagementBaseObject>().First()["MACAddress"].ToString();
  50. _simpleCacheService.Add(BizConfigConst.BIZ_MACHINE_MAC, macAddress);
  51. return macAddress;
  52. }
  53. }