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