资源描述:
《VC++获取网卡MAC、硬盘序列号、CPU+ID、BIOS编号》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VC++获取网卡MAC、硬盘序列号、CPUID、BIOS编号以下代码可以取得系统特征码(网卡MAC、硬盘序列号、CPUID、BIOS编号)BYTEszSystemInfo[4096];//在程序执行完毕后,此处存储取得的系统特征码UINTuSystemInfoLen=0;//在程序执行完毕后,此处存储取得的系统特征码的长度//网卡MAC地址,注意:MAC地址是可以在注册表中修改的{UINTuErrorCode=0;IP_ADAPTER_INFOiai;ULONGuSize=0;DWORDdwResult=GetAdaptersInfo(&iai,&uSize);if(dwResul
2、t==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)<4096U){CopyMemory(szSystemIn
3、fo+uSystemInfoLen,piai2->Address,piai2->AddressLength);uSystemInfoLen+=piai2->AddressLength;piai2=piai2->Next;}}else{uErrorCode=0xF0000000U+dwResult;}VERIFY(HeapFree(GetProcessHeap(),0,piai));}else{returnFALSE;}}else{uErrorCode=0xE0000000U+dwResult;}if(uErrorCode!=0U){returnFALSE;}}14//硬盘序列号,注
4、意:有的硬盘没有序列号{OSVERSIONINFOovi={0};ovi.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);GetVersionEx(&ovi);if(ovi.dwPlatformId!=VER_PLATFORM_WIN32_NT){//OnlyWindows2000,WindowsXP,WindowsServer2003...returnFALSE;}else{if(!WinNTHDSerialNumAsPhysicalRead(szSystemInfo,&uSystemInfoLen,1024)){WinNTHDSerialNu
5、mAsScsiRead(szSystemInfo,&uSystemInfoLen,1024);}}}//CPUID{BOOLbException=FALSE;BYTEszCpu[16]={0};UINTuCpuID=0U;__try{_asm{moveax,0cpuidmovdwordptrszCpu[0],ebxmovdwordptrszCpu[4],edxmovdwordptrszCpu[8],ecxmoveax,1cpuidmovuCpuID,edx}}__except(EXCEPTION_EXECUTE_HANDLER){bException=TRUE;}14if(!bEx
6、ception){CopyMemory(szSystemInfo+uSystemInfoLen,&uCpuID,sizeof(UINT));uSystemInfoLen+=sizeof(UINT);uCpuID=strlen((char*)szCpu);CopyMemory(szSystemInfo+uSystemInfoLen,szCpu,uCpuID);uSystemInfoLen+=uCpuID;}}//BIOS编号,支持AMI,AWARD,PHOENIX{SIZE_Tssize;LARGE_INTEGERso;so.LowPart=0x000f0000;so.HighPar
7、t=0x00000000;ssize=0xffff;wchar_tstrPH[30]=L\device\physicalmemory;DWORDba=0;UNICODE_STRINGstruniph;struniph.Buffer=strPH;struniph.Length=0x2c;struniph.MaximumLength=0x2e;OBJECT_ATTRIBUTESobj_ar;obj_ar.Attributes=64;obj_ar.Length=24;o