中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual Basic > 综合文章
用diskid.dll和disk32.dll获得硬盘序列号
作者:未知 时间:2004-02-14 12:12 出处:CSDN 责编:chinaitpower
              摘要:用diskid.dll和disk32.dll获得硬盘序列号

  今天夜里两点,还没有入睡,就把取得序列号的代码简单写了一下,没有分别在不同的系统上调试,只在win2000下调试通过,如果有问题的话,请告诉我,我再修改

  1.调用diskid.dll实现:

  Option Explicit
  Private Declare Function IsWinNT Lib "DiskID.DLL" () As Long
  Private Declare Function ReadPhysicalDrive9X Lib "DiskID.DLL" (driveID As Long, buffer As Long, bufLen As Long) As Long
  Private Declare Function ReadPhysicalDriveInNT Lib "DiskID.DLL" (driveID As Long, buffer As Long, bufLen As Long) As Long

  Private Type DRIVER_INFO_OK
  ModalNumber(39) As Byte
  SerialNumber(19) As Byte
  ControlNum(7) As Byte
  DriveType As Long
  Cylinders As Long
  Heads As Long
  Sectors As Long
  End Type

  Private Sub Command1_Click()
  Dim x As DRIVER_INFO_OK
  Dim i As Long
  If IsWinNT = 1 Then
  i = ReadPhysicalDriveInNT(ByVal 0, ByVal VarPtr(x), ByVal 256)
  Else
  i = ReadPhysicalDrive9X(ByVal 0, ByVal VarPtr(x), ByVal 256)
  End If




  Dim s As String
  s = StrConv(x.ModalNumber, vbUnicode)
  s = Left(s, InStr(1, s, Chr(0)) - 1)
  MsgBox "硬件厂商代码为:" + s
  s = StrConv(x.SerialNumber, vbUnicode)
  s = Left(s, InStr(1, s, Chr(0)) - 1)
  MsgBox "硬盘序列号为:" + s
  End Sub

  2.调用diskid32.dll实现:

  Option Explicit
  Private Declare Function DiskID32 Lib "DiskID32.DLL" (ByRef DiskModel As Byte, ByRef DiskID As Byte) As Long

  Private Sub Command1_Click()
  Dim DiskModel(31) As Byte, DiskID(31) As Byte, i As Integer, Model As String, ID As String
  If DiskID32(DiskModel(0), DiskID(0)) <> 1 Then
  MsgBox "get diskid32 err"
  Exit Sub
  End If
  For i = 0 To 31
  If Chr(DiskModel(i)) <> Chr(0) Then
  Model = Model & Chr(DiskModel(i))
  End If
  If Chr(DiskID(i)) <> Chr(0) Then
  ID = ID & Chr(DiskID(i))
  End If
  Next
  MsgBox "硬件产生代码为:" + Model
  MsgBox "硬盘序列号为:" + ID

  End Sub

  说明:diskid.dll可从http://www.applevb.com/lib/diskio.rar下载,diskid32.dll可从http://www.downez.com/down.asp?id=1149&no=1下载

 

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有