请问:怎样获取硬盘的物理序列号和CPU的序列号?
如题,硬盘序列号必须是物理序列号,就是写在硬盘外壳上面的那个sn,不是那个逻辑序列号。
除了用嵌入汇编代码和ReadFile之外,有其它更简捷的方法吗?
问题点数:100、回复次数:9Top
1 楼cyberHunK(→迈克·老猫←)回复于 2005-11-07 11:18:00 得分 10
获得硬盘的序列号用系统函数GetVolumeInformation()
DWORD Serial;
DWORD Length;
GetVolumeInformation("C:",NULL, MAX_PATH,&Serial,&Length, NULL,NULL,MAX_PATH);
CString StrSerial;
StrSerial.Format("%ud",Serial);
MessageBox("C:盘的序列号为:"+StrSerial,"信息提示",MB_OK);
在VC里提供与硬件的接口可以得到CPU的标识、个数、名称、频率、这个序列号是CPU的一种生产模式,用来表示生产日期、产品线、国家地区的信息,所以不能读!Top
2 楼rageliu(天气好了就去长白山看水怪去了,嘿嘿...)回复于 2005-11-07 11:34:51 得分 10
// 硬盘序列号,注意:有的硬盘没有序列号
{
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 );
}
}
}
// CPU ID
{
BOOL bException = FALSE;
BYTE szCpu[16] = { 0 };
UINT uCpuID = 0U;
__try
{
_asm
{
mov eax, 0
cpuid
mov dword ptr szCpu[0], ebx
mov dword ptr szCpu[4], edx
mov dword ptr szCpu[8], ecx
mov eax, 1
cpuid
mov uCpuID, edx
}
}
__except( EXCEPTION_EXECUTE_HANDLER )
{
bException = TRUE;
}
if( !bException )
{
CopyMemory( szSystemInfo + uSystemInfoLen, &uCpuID, sizeof( UINT ) );
uSystemInfoLen += sizeof( UINT );
uCpuID = strlen( ( char* )szCpu );
CopyMemory( szSystemInfo + uSystemInfoLen, szCpu, uCpuID );
uSystemInfoLen += uCpuID;
}
}Top
3 楼rageliu(天气好了就去长白山看水怪去了,嘿嘿...)回复于 2005-11-07 11:35:55 得分 10
so sorry
没看清是取得物理序列号
稍等...Top
4 楼ljmanage(过客)回复于 2005-11-07 11:37:50 得分 20
http://www.vckbase.com/document/viewdoc/?id=706Top
5 楼happyparrot(快乐鹦鹉)回复于 2005-11-07 11:38:59 得分 10
获取硬盘序列号
http://bookdown2.ddvip.net/program/C++/index7/37.htmTop
6 楼happyparrot(快乐鹦鹉)回复于 2005-11-07 11:40:40 得分 10
获取CPU序列号
http://sinhu.net/faq/50/198864.htmlTop
7 楼lixiaosan(小三)回复于 2005-11-07 11:40:48 得分 20
http://www.vckbase.com/document/viewdoc/?id=706Top
8 楼zhaochong12(超级大笨鸟)回复于 2005-11-07 12:02:57 得分 5
好多了。。友谊Up....Top
9 楼laiyiling(陌生人[MVP])回复于 2005-11-07 12:14:41 得分 5
用WMI(WINDOWS管理规范)可以很方便的得到系统信息.Top




