1.主板DMI系统UUID
不同的用户使用不同的工具取到的可能取出来的不一样,但是仔细观察,他们的字符串是一样的,可能是大小端转换的问题
工具:HWiNFO32.EXE和everestultimate
这个似乎能够作为电脑唯一性标识,联想电脑,技嘉主板测试下来,都不重复
2. machineGUID
这个测试下来,发现同一个安装盘安装的,好像都一样,不能做唯一性标识
3. CPUID同一批次是一样的,Bios ID还没有严重是否会重复,OEM的主板获取不到。 虚拟机里获取不到硬盘序列号,获取硬盘序列号需要管理员权限(没试过WMI的方法)
5. 无线网卡地址也可以修改: http://jingyan.baidu.com/article/0320e2c180b5471b87507bc0.html
部分参考代码:
可以通过驱动获取原生MAC地址,获取硬盘序列号,CPU,主板序列号,800元可以获取源码,测试过几千台各种机型机器,省去你测试开发时间,绝对划算, 联系weixin: youyouran2017
//获取mac地址
string CSysInfo::GetMacAddr(int iMacType) { UINT uSystemInfoLen = 0; // 在程序执行完毕后,此处存储取得的系统特征码的长度 string strMacAddr; UINT uErrorCode = 0; IP_ADAPTER_INFO iai; ULONG uSize = 0; DWORD dwResult = GetAdaptersInfo( &iai, &uSize ); if( dwResult == ERROR_BUFFER_OVERFLOW ) { IP_ADAPTER_INFO* piai = ( IP_ADAPTER_INFO* )HeapAlloc( GetProcessHeap( ), 0, uSize ); if( piai != NULL ) { dwResult = GetAdaptersInfo( piai, &uSize ); if( ERROR_SUCCESS == dwResult ) { IP_ADAPTER_INFO* piai2 = piai; while( piai2 != NULL) { //uSystemInfoLen += piai2->AddressLength; if (MIB_IF_TYPE_ETHERNET == piai2->Type) { char temp[3] = {0}; for (int i = 0; i < 16; i++) { CString cstrTemp; cstrTemp.Format(_T("%02X"), piai2->Address[i]); string strTmp = CStringToString(cstrTemp); //_itoa(piai2->Address[i], temp, 16); if (!strMacAddr.empty()) { strMacAddr += '-'; } strMacAddr += strTmp; } break; } piai2 = piai2->Next; } } else { uErrorCode = 0xF0000000U + dwResult; } } else { return "91-91-99-19-91-29"; } } else { uErrorCode = 0xE0000000U + dwResult; } if (strMacAddr.empty()) { strMacAddr = "91-91-99-19-91-29"; } return strMacAddr; }
获取主板序列号
string CSysInfo::GetMotherBoardId() { if (!m_sstrMotherBoardId.empty()) { return m_sstrMotherBoardId; } T_DEVICE_PROPERTY devProp[1]; int bRes = WMI_DeviceQuery(MOTHERBOARD_ID, devProp, 1); if (bRes > 0) { wstring wstrMotherBoardId = devProp[0].szProperty; m_sstrMotherBoardId = UnicodeToAnsi(devProp[0].szProperty); } return m_sstrMotherBoardId; }
本文地址: http://www.5118.link/article/3c12958a1043a42e2c14.html