Private Declare Function GetVolumeInformation Lib "kernel32.dll" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Integer, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Function GetSerialNumber(strDrive As String) As Long
    Dim SerialNum As Long
    Dim Res As Long
    Dim Temp1 As String
    Dim Temp2 As String
    Temp1 = String$(255, Chr$(0))
    Temp2 = String$(255, Chr$(0))
    Res = GetVolumeInformation(strDrive, Temp1, Len(Temp1), SerialNum, 0, 0, Temp2, Len(Temp2))
    GetSerialNumber = SerialNum
End Function
Private Sub Command1_Click()
Call MsgBox(GetSerialNumber(Left(Drv.Drive, 2) & "\"))
End Sub

解决方案 »

  1.   

    Call MsgBox(GetSerialNumber(Left(Drv.Drive, 2) & "\"))
    里的Drv.Drive是什么?
      

  2.   

    一楼的方法实际上只是得到各个分区所得到的序列号
    如果要得到物理硬盘的序列号我这里下载到过一个
    DiskSerial.dll ,从哪里弄来的忘了
    你去网上找找吧
      

  3.   

    http://www.csdn.net/cnshare/soft/4/4806.shtm下载
      

  4.   

    http://www.csdn.net/expert/topic/577/577681.xml?temp=.9733698
    http://ygyuan.go.163.com/
    http://ygyuan.3322.net/
      
    下载并安装"雁留声名录系统",然后你就可以得到第一个硬盘的序列号了!
    Private  Declare  Function  GetDiskSN  Lib  "GetDiskSN.dll"  (ByVal  lpszSN  As  String)  As  Double
    Dim  s    As  String
    s  =  String(1024,  Chr(0))
    GetDiskSN  (s)
    s  =  Trim(Replace(s,  Chr(0),  ""))
    msgbox  s  
    免费!