[VB6] Festplatten-ID / Hardware-ID auslesen

Es gibt Situationen, in denen Sie die Festplatten-ID bzw. Hardware ID auslesen. Ein Grund kann sein, dass Sie einen Lizenzmechanismus einbauen wollen, um Lizenzen zu verkaufen. Die Software erkennt dann die Hardware ID und kann prüfen, ob für diese ID bereits eine Lizenz erworben wurde.

Das ist also ein Beispiel dafür, dass man die Hardware ID eines Rechners auslesen möchte. Das geht mit der folgenden Funktion, die gerne auch in ein Modul kopiert werden kann:

Public 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


Public Function LwSerialNumber(Lw As String) As String
  Dim FileSystem As String
  Dim SerNum As Long
  Dim MaxLen As Long
  Dim Flags As Long
  Dim VolSize As Long
  Dim VolLabel As String
  Dim SerialNumber As String

  Lw = LCase$(Left$(Lw, 1))

  If Lw = "\" Then
    Exit Function
  Else
    Lw = Lw & ":\"
  End If

  FileSystem = Space$(256)
  If GetVolumeInformation(Lw, VolLabel, VolSize, SerNum, _
          MaxLen, Flags, FileSystem, Len(FileSystem)) <> 0 Then

    SerialNumber = Trim(Hex(SerNum))
    SerialNumber = _
          String(8 - Len(SerialNumber), "0") & SerialNumber
    SerialNumber = _
          Left$(SerialNumber, 4) & "-" & Right$(SerialNumber, 4)

    LwSerialNumber = SerialNumber
  Else
    LwSerialNumber = "- keine -"
  End If
End Function


Die Funktion zum Auslesen der Hardware ID kann folgendermaßen aufgerufen werden:

Dim festplatte As String
Dim festplatten_id As String

festplatte = Left(App.Path, 1)
festplatten_id = LwSerialNumber(festplatte)
MsgBox festplatten_id