CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

请问:怎样获取硬盘的物理序列号和CPU的序列号?

楼主happydingdang(我要up出星星)2005-11-07 10:51:01 在 VC/MFC / 基础类 提问

如题,硬盘序列号必须是物理序列号,就是写在硬盘外壳上面的那个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

相关问题

  • 硬盘物理序列号
  • ▲▲▲关于软件加密问题(是对CPU,硬盘序列号,卷标,主板序列号还是网卡物理地址?)
  • 如何修改物理硬盘的序列号? 不是卷标的序列号。
  • 获取硬盘物理序列号,DLL还是VXD??
  • 怎样用PB7脚本取得硬盘得物理序列号?
  • 请教(购买)软件加密--取硬盘 物理序列号
  • 免费赠送。。读取硬盘物理序列号的方法。。
  • 如何取得硬盘的物理序列号
  • 怎么样在VB中获取硬盘的物理序列号?
  • 提取硬盘物理序列号的问题。

关键词

  • .net
  • 序列号
  • 硬盘
  • cpu
  • 信息
  • null
  • szcpu
  • ucpuid
  • usysteminfolen
  • ovi

得分解答快速导航

  • 帖主:happydingdang
  • cyberHunK
  • rageliu
  • rageliu
  • ljmanage
  • happyparrot
  • happyparrot
  • lixiaosan
  • zhaochong12
  • laiyiling

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo