電腦有沒有唯一標識符,查了一些資料,開始以為CPUID可以,但是實際上統(tǒng)一類型的CPU用的是相同的ID:
GetCPUID()
{
// note: 在cmd中,輸入命令字:wmic CPU get ProcessorID,即可獲得本機處理器ID
CString strCPUID;
unsigned long s1, s2;
__asm {
mov eax, 01h
xor edx, edx
cpuid
mov s1, edx
mov s2, eax
}
strCPUID.Format("%08X%08X", s1, s2);
iniWriter.WriteString("CPU", "ProcessorID", strCPUID.GetBuffer());
return strCPUID;
}
那么BIOS ID是否是唯一的呢?主板上的BIOS芯片是主板上唯一貼有標簽的芯片,如果電腦開機時登錄bios可以看到里面的一些基本信息:
bios編號也可以用win cmd的命令獲得,為一個4個字節(jié)的編碼,但這個編碼指的是電腦的bios版本,也不是唯一的。
CString strBIOSSerialNo, strTmp;
WinExec("cmd.exe /c wmic bios get serialnumber > mypc.log", SW_HIDE);
Sleep(1000);
FILE* fpc = fopen(".\\mypc.log", "r");
char ch[20] = {};
int flag = 0;
char msg[30] = "";
char buf[40];
int numread = fread(buf, sizeof(char), 34, fpc);
numread = fread(buf, sizeof(char), 16, fpc);
for (int i = 0; i < 16; i++)
{
if (buf[i] == 0x00 || buf[i] == 0x20 || buf[i] == 0x0d || buf[i] == 0x0a || buf[i] == 0xcc)
continue;
else
strTmp.Format("%c", buf[i]);
strBIOSSerialNo += strTmp;
}
SetDlgItemText(IDC_STATIC2, strBIOSSerialNo.GetBuffer());
如何獲取產(chǎn)品序列號呢?命令行方式可以如下獲得:
VC++獲得方法:
// 獲取電腦產(chǎn)品ID
//=============================================================================
WinExec("cmd.exe /c systeminfo > mypcinfo.log", SW_HIDE);
Sleep(6000);
char lineBuff[256];
CString strProductTmp = _T("產(chǎn)品 ID:"), strSysInfo;
FILE* fps = fopen(".\\mypcinfo.log", "r");
while (!feof(fps))
{
fgets(lineBuff, 256, fps);
strTmp.Format(_T("%s"), lineBuff);
if (strTmp.Find(strProductTmp) != -1)
{
strSysInfo = strTmp.Mid(strProductTmp.GetLength() + 1);
strSysInfo.Replace(_T(" "), _T(""));
break;
}
}
fclose(fps);
SetDlgItemText(IDC_STATIC3, strSysInfo.GetBuffer());
WinExec("cmd.exe /c del /F mypcinfo.log", SW_HIDE);
remove("mypcinfo.log");
?或者使用ifstream去讀文件:
// 獲取電腦產(chǎn)品ID
//=============================================================================
CString strSysInfo;
WinExec("cmd.exe /c systeminfo > mypcinfo.log", SW_HIDE);
Sleep(5000);
char buff[256];
CString strProductTmp = _T("產(chǎn)品 ID:");
ifstream infile("mypcinfo.log");
while (!infile.eof())
{
infile.getline(buff, 100);
strTmp.Format(_T("%s"), buff);
if (strTmp.Find(strProductTmp) != -1)
{
strSysInfo = strTmp.Mid(strProductTmp.GetLength() + 1);
strSysInfo.Replace(_T(" "), _T(""));
break;
}
}
infile.close();
SetDlgItemText(IDC_STATIC3, strSysInfo.GetBuffer());
WinExec("cmd.exe /c del /F mypcinfo.log", SW_HIDE);
remove("mypcinfo.log");
?文章來源地址http://www.zghlxwxcb.cn/news/detail-650208.html文章來源:http://www.zghlxwxcb.cn/news/detail-650208.html
?
到了這里,關于電腦的唯一標識符,VC++如何讀出?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!