文档详情

VC++获取网卡MAC、硬盘序列号、CPU+ID、BIOS编号.doc

发布:2017-12-11约2.06万字共14页下载文档
文本预览下载声明
VC++获取网卡MAC、硬盘序列号、CPU ID、BIOS编号 以下代码可以取得系统特征码(网卡MAC、硬盘序列号、CPU ID、BIOS编号) BYTE szSystemInfo[4096]; // 在程序执行完毕后,此处存储取得的系统特征码 UINT uSystemInfoLen = 0; // 在程序执行完毕后,此处存储取得的系统特征码的长度 // 网卡 MAC 地址,注意: MAC 地址是可以在注册表中修改的 { 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 ) 4096U) { CopyMemory(szSystemInfo+uSystemInfoLen,piai2-Address, piai2-AddressLength ); uSystemInfoLen += piai2-AddressLength; piai2 = piai2-Next; } } else { uErrorCode = 0xF0000000U + dwResult; } VERIFY( HeapFree( GetProcessHeap( ), 0, piai ) ); } else { return FALSE; } } else { uErrorCode = 0xE0000000U + dwResult; } if( uErrorCode != 0U ) { return FALSE; } } // 硬盘序列号,注意:有的硬盘没有序列号 { OSVERSIONINFO ovi = { 0 }; ovi.dwOSVersionInfoSize = sizeof( OSVERSIONINFO ); GetVersionEx( ovi ); if( ovi.dwPlatformId != VER_PLATFORM_WIN32_NT ) { // Only Windows 2000, Windows XP, Windows Server 2003... return FALSE; } else { if( !WinNTHDSerialNumAsPhysicalRead( szSystemInfo, uSystemInfoLen, 1024 ) ) { WinNTHDSerialNumAsScsiRead( szSystemInfo, uSystemInfoLen, 1024 ); }
显示全部
相似文档