读取电脑CPU序列号、主板BIOS、硬盘的序列号

转载 2004年07月21日 14:42:00

 

CSDN - 专家门诊 -
主  题:
如何读取电脑CPU序列号、主板BIOS、硬盘的序列号
作  者: thb (thb)
信 誉 值: 93
所属论坛: VC/MFC 硬件/系统
问题点数: 100
回复次数: 8
发表时间: 2004-2-16 16:57:43
如题 
回复人: limj(阿满) ( ) 信誉:99 2004-2-16 17:01:01 得分:10
关注 
Top
回复人: fzd999(花差花差) ( ) 信誉:139 2004-2-16 17:02:02 得分:30
如何读取硬盘的序列号 ---- 硬盘的序列号只能采用对硬盘控制器直接操作的方式进行读取,也就是说只能采用 CPU的I/O指令操作硬盘控制器,读取的方法如下面的C语言程序所示: static int WaitIde() { int al; while ((al=inp(0x1F7)) >=0x80) ; return al; } static void ReadIDE() { int al; int i; WORD pw[256]; WaitIde(); outp(0x1F6,0xA0); al = WaitIde(); if ((al&0x50)!=0x50) return; outp(0x1F6,0xA0); outp(0x1F7,0xEC); al = WaitIde(); if ((al&0x58)!=0x58) return; for (i=0;i< 256;i++) pw[i] = inpw(0x1F0); } 
Top
回复人: fzd999(花差花差) ( ) 信誉:139 2004-2-16 17:03:05 得分:10
怎样用程序取得CPU信息 主 要 可 利 用 利 用CPUID 汇 编 指 令( 机 器 码:0FH A2H, 如 果 你 的 编 译 器 不 支 持CPUID 指 令, 只 有emit 机 器 码 了) 该 指 令 可 以 被 如 下CPU 识 别 Intel 486 以 上 的CPU, Cyrix M1 以 上 的CPU, AMD Am486 以 上 的CPU ---- (1) 取CPU OEM 字 符 串, 判 断CPU 厂 商 ---- 先 让EAX=0, 再 调 用CPUID ---- Inel 的CPU 将 返 回: EBX:756E6547H 'Genu' EDX:49656E69H 'ineI' ECX:6C65746EH 'ntel' EBX,EDX,ECX 将 连 成"GenuineIntel", 真 正 的Intel。 Cyrix 的CPU 将 返 回: EBX:43797269H EDX:78496E73H ECX:74656164H "CyrixInstead","Cyrix 来 代 替"。 AMD 的CPU 将 返 回: EBX:41757468H EDX:656E7469H ECX:63414D44H "AuthenticAMD", 可 信 的AMD。 ---- 在Windows98 中, 用 右 键 单 击" 我 的 电 脑", 选 择" 属 性- 常 规" 在 计 算 机 描 述 处 就 可 看 见CPU OEM 字 符 串。 ---- (2)CPU 到 底 是 几86, 是 否 支 持MMX ---- 先 让EAX=1, 再 调 用CPUID ---- EAX 的 8 到11 位 就 表 明 是 几86 3 - 386 4 - i486 5 - Pentium 6 - Pentium Pro Pentium II 2 - Dual Processors EDX 的 第0 位: 有 无FPU ---- EDX 的 第23 位:CPU 是 否 支 持IA MMX, 很 重 要 啊 ! 如 果 你 想 用 那57 条 新 增 的 指 令, 先 检 查 这 一 位 吧, 否 则 就 等 着 看Windows 的" 该 程 序 执 行 了 非 法 指 令, 将 被 关 闭" 吧。 ---- (3) 专 门 检 测 是 否P6 架 构 ---- 先 让EAX=1, 再 调 用CPUID ---- 如 果AL=1, 就 是Pentium Pro 或Pentium II ---- (4) 专 门 检 测AMD 的CPU 信 息 ---- 先 让EAX=80000001H, 再 调 用CPUID ---- 如 果EAX=51H, 是AMD K5 ---- 如 果EAX=66H, 是K6 ---- K7 是 什 么 标 志, 只 有 等 大 家 拿 到K7 的 芯 再 说 了。 ---- EDX 第0 位: 是 否 有FPU( 多 余 的 ! 谁 用 过 没FPU 的K5,K6?) ---- EDX 第23 位,CPU 是 否 支 持MMX, ---- 程 序 如 下: 是C++Builder 的 控 制 台 程 序, 可 以 给 出 你 的" 心" 的 信 息。 如 果 把 这 个 技 术 用 于DLL 中, 便 可 以 使VB 程 序 也 知 道" 心" 的 信 息。 //------CPUID Instruction Demo Program------------ #include < conio.h > #include < iostream.h > #pragma hdrstop //------------------------------------------------ #pragma inline #pragma argsused int main(int argc, char **argv) { char OEMString[13]; int iEAXValue,iEBXValue,iECXValue,iEDXValue; _asm { mov eax,0 cpuid mov DWORD PTR OEMString,ebx mov DWORD PTR OEMString+4,edx mov DWORD PTR OEMString+8,ecx mov BYTE PTR OEMString+12,0 } cout< < "This CPU 's OEM String is:"< < OEMString< < endl; _asm { mov eax,1 cpuid mov iEAXValue,eax mov iEBXValue,ebx mov iECXValue,ecx mov iEDXValue,edx } if(iEDXValue&0x800000) cout < < "This is MMX CPU"< < endl; else cout < < "None MMX Support."< < endl; int iCPUFamily=(0xf00 & iEAXValue) > >8; cout < < "CPU Family is:"< < iCPUFamily< < endl; _asm{ mov eax,2 CPUID } if(_AL==1) cout < < "Pentium Pro or Pentium II Found"; getch(); return 0; 
Top
回复人: thb(thb) ( ) 信誉:93 2004-2-16 18:13:31 得分:0
to: fzd999(花差花差) 编译连接通不过: error LNK2001: unresolved external symbol _inpw error LNK2001: unresolved external symbol _outp 我已经包含了 #include <conio.h> _inpw 是在哪个库里面? 
Top
回复人: thb(thb) ( ) 信誉:93 2004-2-17 15:58:07 得分:0
to: fzd999(花差花差) 谢谢!! 但你对cpuID的回答好像不是我所要的, 我是想读取cpu的序列号, 而那里面并没有这些信息 
Top
回复人: Goldcastle(金城) ( ) 信誉:105 2004-3-11 10:34:45 得分:30
 char szCPUID[129] = {NULL}; char szTmp[33] = {NULL}; unsigned long s1 = 0, s2 = 0; _asm { mov eax,01h xor edx,edx cpuid mov s1,edx mov s2,eax } sprintf(szTmp, "%08X%08X", s1, s2); strcpy(szCPUID, szTmp); _asm { mov eax,03h xor ecx,ecx xor edx,edx cpuid mov s1,edx mov s2,ecx } sprintf(szTmp, "%08X%08X", s1, s2); strcat(szCPUID, szTmp); strcpy(CpuId,szCPUID); return CpuId; /////////////////////////// //AMI的序列号地址在0x000FF478 //Award的序列号地址在0x000FEC71 //而Phoenix的序列号不太明确,可能是0x000f6577、0x000f7196、0x000f7550中的一个, PCHAR bname, bcopy, bdate, bserial; bname=(char*)(0xFE061); // Bios name bcopy=(char*)(0xFE091); // Bios copyright bdate=(char*)(0xFFFF5); // Bios date bserial=(char*)(0x000FEC71); // Bios serial number 
Top
回复人: Goldcastle(金城) ( ) 信誉:105 2004-3-11 10:40:52 得分:20
硬盘的序列号 http://expert.csdn.net/Expert/topic/2748/2748251.xml?temp=.3482324 
Top
回复人: lishigen() ( ) 信誉:100 2004-6-14 18:07:13 得分:0
up 
Top

该问题已经结贴 ,得分记录: limj (10)、 fzd999 (30)、 fzd999 (10)、 Goldcastle (30)、 Goldcastle (20)、

C++ 硬件信息 获取主板序列号

获取计算机网卡主板序列号的方法很多,这里采用的是命令行的形式获取,可以获取主板序列号,很简单,直接上代码。 【1】头文件 #if !defined(AFX_DD71A3C0_A52F_4C38_B...
  • aoshilang2249
  • aoshilang2249
  • 2015年04月09日 13:44
  • 7218

如何读取电脑CPU序列号、主板BIOS、硬盘的序列号

如何读取电脑CPU序列号、主板BIOS、硬盘的序列号 (2010-09-11 09:01:41) 转载▼ 标签: 序列号 硬盘控制器 c语言 读取 进行 it ...
  • hyxl75
  • hyxl75
  • 2013年11月05日 20:02
  • 2909

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

以下代码可以取得系统特征码(网卡MAC、硬盘序列号、CPU ID、BIOS编号)     BYTE szSystemInfo[4096]; // 在程序执行完毕后,此处存储取得的系统特征码 ...
  • mayise
  • mayise
  • 2014年11月26日 17:27
  • 2204

通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号

转载自:http://blog.csdn.net/jhqin/article/details/5548656 开发语言:C/C++ 支持平台:Windows 实现功能: 通过WMI获取网...
  • dongdan_002
  • dongdan_002
  • 2015年01月06日 15:54
  • 3927

如何读取电脑CPU序列号、主板BIOS、硬盘的序列号

如何读取电脑CPU序列号、主板BIOS、硬盘的序列号 (2010-09-11 09:01:41) 转载▼ 标签: 序列号 硬盘控制器 c语言 读取 进行 it ...
  • hyxl75
  • hyxl75
  • 2013年11月05日 20:02
  • 2909

获取电脑硬盘,CPU,主板序列号,以及主板信息

  • 2016年03月31日 10:52
  • 42KB
  • 下载

C#获取硬盘、CPU、主板、网卡的序列号…… ManagementObjectSearcher

在很多情况下,你可能都需要得到微机的硬件信息。比如:你想给你的软件加锁,不让别人随便访问。 首先,你必须知道这个应用程序的功能是使用System.Management这个类得到的。因此,你需要加...
  • u012141979
  • u012141979
  • 2015年12月27日 16:14
  • 242

C#获取硬盘、CPU、主板、网卡的序列号

转自:http://blog.sina.com.cn/s/blog_557d25460101hq9t.html 在很多情况下,你可能都需要得到微机的硬件信息。比如:你想给你的软件加锁...
  • threadroc
  • threadroc
  • 2016年06月05日 22:26
  • 2186

VB.NET获取硬件序列号(CPU,主板硬盘等)

  • 2017年08月22日 17:43
  • 2KB
  • 下载

Java获取CPU&amp;主板&amp;硬盘序列号

  • 2012年02月21日 17:11
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:读取电脑CPU序列号、主板BIOS、硬盘的序列号
举报原因:
原因补充:

(最多只允许输入30个字)