看见过很多 提取硬盘信息的代码,但从来没有测试成功过,哪位有共享一下吧。

解决方案 »

  1.   

    http://dev.csdn.net/Develop/article/22/22616.shtm
      

  2.   

    Public Declare Function IsWinNT Lib "DiskID.DLL" () As Long
    Public Declare Function ReadPhysicalDrive9X Lib "DiskID.DLL" (driveID As Long, buffer As Long, bufLen As Long) As Long
    Public Declare Function ReadDrivePortsInWin9X Lib "DiskID.DLL" (driveID As Long, buffer As Long, bufLen As Long) As Long
    Public DiskID As String
    Public Declare Function ReadPhysicalDriveInNT Lib "DiskID.DLL" (driveID As Long, buffer As Long, bufLen As Long) As Long
    Public Declare Function DiskID32 Lib "DiskID32.DLL" (ByRef DiskModel As Byte, ByRef DiskID As Byte) As LongPublic 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 TypePublic Function GetDiskID() As String
        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 = ReadDrivePortsInWin9X(ByVal 0, ByVal VarPtr(x), ByVal 256)
        End If
        Dim s As String
        s = StrConv(x.SerialNumber, vbUnicode)
        If InStr(s, Chr(0)) Then s = Left(s, InStr(1, s, Chr(0)) - 1)    
        For i = 1 To Len(s)
            DiskID = DiskID & Asc(Mid(s, i, 1)) + i
            MsgBox DiskID
        Next
        GetDiskID = s
    End Function
    Public Function GetDiskID32() As String    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 Function
        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
        GetDiskID32 = ID
    End Function说明:本地机要有diskid.dll ,diskid32.dll
      

  3.   

    有很多啊,用google查找,什么的都有