首页 > 代码库 > C#提供用户硬件唯一信息的辅助类 C#硬件信息查询类库
C#提供用户硬件唯一信息的辅助类 C#硬件信息查询类库
|
1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 5 namespace Commons 6 { 7 /// <summary> 8 /// 提供用户硬件唯一信息的辅助类 9 /// </summary> 10 public class FingerprintHelper 11 { 12 public static string Value() 13 { 14 return pack(cpuId() 15 + biosId() 16 + diskId() 17 + baseId() 18 + videoId() 19 + macId()); 20 } 21 22 //Return a hardware identifier 23 private static string identifier(string wmiClass, string wmiProperty, string wmiMustBeTrue) 24 { 25 string result=""; 26 System.Management.ManagementClass mc = new System.Management.ManagementClass(wmiClass); 27 System.Management.ManagementObjectCollection moc = mc.GetInstances(); 28 foreach (System.Management.ManagementObject mo in moc) 29 { 30 if (mo[wmiMustBeTrue].ToString()=="True") 31 { 32 33 //Only get the first one 34 if (result=="") 35 { 36 try 37 { 38 result = mo[wmiProperty].ToString(); 39 break; 40 } 41 catch 42 { 43 } 44 } 45 46 } 47 } 48 return result; 49 } 50 51 //Return a hardware identifier 52 private static string identifier(string wmiClass, string wmiProperty) 53 { 54 string result=""; 55 System.Management.ManagementClass mc = new System.Management.ManagementClass(wmiClass); 56 System.Management.ManagementObjectCollection moc = mc.GetInstances(); 57 foreach (System.Management.ManagementObject mo in moc) 58 { 59 60 //Only get the first one 61 if (result=="") 62 { 63 try 64 { 65 result = mo[wmiProperty].ToString(); 66 break; 67 } 68 catch 69 { 70 } 71 } 72 73 } 74 return result; 75 } 76 77 private static string cpuId() 78 { 79 //Uses first CPU identifier available in order of preference 80 //Don‘t get all identifiers, as very time consuming 81 string retVal = identifier("Win32_Processor", "UniqueId"); 82 if (retVal=="") //If no UniqueID, use ProcessorID 83 { 84 retVal = identifier("Win32_Processor", "ProcessorId"); 85 86 if (retVal=="") //If no ProcessorId, use Name 87 { 88 retVal = identifier("Win32_Processor", "Name"); 89 90 91 if (retVal=="") //If no Name, use Manufacturer 92 { 93 retVal = identifier("Win32_Processor", "Manufacturer"); 94 } 95 96 //Add clock speed for extra security 97 retVal +=identifier("Win32_Processor", "MaxClockSpeed"); 98 } 99 }100 101 return retVal;102 }103 104 //BIOS Identifier105 private static string biosId()106 {107 return identifier("Win32_BIOS", "Manufacturer")108 + identifier("Win32_BIOS", "SMBIOSBIOSVersion")109 + identifier("Win32_BIOS", "IdentificationCode")110 + identifier("Win32_BIOS", "SerialNumber")111 + identifier("Win32_BIOS", "ReleaseDate")112 + identifier("Win32_BIOS", "Version");113 }114 115 //Main physical hard drive ID116 private static string diskId()117 {118 return identifier("Win32_DiskDrive", "Model")119 + identifier("Win32_DiskDrive", "Manufacturer")120 + identifier("Win32_DiskDrive", "Signature")121 + identifier("Win32_DiskDrive", "TotalHeads");122 }123 124 //Motherboard ID125 private static string baseId()126 {127 return identifier("Win32_BaseBoard", "Model")128 + identifier("Win32_BaseBoard", "Manufacturer")129 + identifier("Win32_BaseBoard", "Name")130 + identifier("Win32_BaseBoard", "SerialNumber");131 }132 133 //Primary video controller ID134 private static string videoId()135 {136 return identifier("Win32_VideoController", "DriverVersion")137 + identifier("Win32_VideoController", "Name");138 }139 140 //First enabled network card ID141 private static string macId()142 {143 return identifier("Win32_NetworkAdapterConfiguration", "MACAddress", "IPEnabled");144 }145 146 //Packs the string to 8 digits147 private static string pack(string text)148 {149 string retVal;150 int x = 0;151 int y = 0;152 foreach (char n in text)153 {154 y++;155 x += (n*y);156 }157 retVal = x.ToString() + "00000000";158 159 return retVal.Substring(0, 8);160 }161 }162 }
转自:记住你 C#社区
C#提供用户硬件唯一信息的辅助类 C#硬件信息查询类库
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。