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
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