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;
}