什么叫计算机硬件特征码,获取计算机硬件特征码【上】

本文介绍了如何通过代码获取Windows系统的硬件特征码,包括网卡MAC地址、硬盘序列号、CPU ID和BIOS编号。提供了详细的代码示例,涉及Windows API函数的使用,如GetAdaptersInfo获取MAC地址,通过CPUID指令获取CPU ID,以及利用内核级函数读取硬盘和BIOS信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下代码可以取得系统特征码(网卡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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值