VisualBasic Snippets  

Auslesen der Festplattenseriennummer:
 

Die ewige Frage, wie sichere ich mein Programm gegen unerlaubtes kopieren !

Ich habe eine solche Lösung mal programmiert mit der Seriennummer der Harddisk, funktioniert recht gut.
Die Registrierung erfolgt per Post/Internet mit einem Hardwareschlüssel (generiert aus der HD-S/N), vorher ist die Version nur beschränkt lauffähig.

Mit dem untenstehenden Programm-Code können Sie u.a. diese Seriennummer auslesen:


Dieser Codeteil kann als eigenständiges Modul verwendet werden:


Option Explicit

'--------------------------------------------------------------------
' Deklaration
Public Declare Function GetVolumeInformation Lib "kernel32.dll" Alias _
    "GetVolumeInformationA" (ByVal lpRootPathName As String, _
                            ByVal lpVolumeNameBuffer As String, _
                            ByVal nVolumeNameSize As Long, _
                            lpVolumeSerialNumber As Long, _
                            lpMaximumComponentLength As Long, _
                            lpFileSystemFlags As Long, ByVal _
                            lpFileSystemNameBuffer As String, _
                            ByVal nFileSystemNameSize As Long) As Long


Public Function GetHardDiskInfo(Optional HDDrive As String = "C", Optional InfoTyp As Integer = 1)
Dim tsVolname As String
Dim tsSN As Long
Dim tsSnstr As String
Dim tsMaxcomplen As Long
Dim tsSysflags As Long
Dim tsSysname As String
Dim tsRetval As Long

    'Uebergabewerte anpassen anpassen
    HDDrive = Left(HDDrive, 1) & ":\"
    If InfoTyp > 3 Then InfoTyp = 1

    'Variablen füllen
    tsVolname = Space(256)
    tsSysname = Space(256)
    'Informationen vom Laufwerk abfragen
    tsRetval = GetVolumeInformation(HDDrive, tsVolname, Len(tsVolname), tsSN, tsMaxcomplen, _
            tsSysflags, tsSysname, Len(tsSysname))
    
    'Strings zurechtschneiden
    tsVolname = Left(tsVolname, InStr(tsVolname, vbNullChar) - 1)
    tsSysname = Left(tsSysname, InStr(tsSysname, vbNullChar) - 1)
    
    'Seriennummer formatieren
    tsSnstr = Trim(Hex(tsSN))
    tsSnstr = String(8 - Len(tsSnstr), "0") & tsSnstr
    tsSnstr = Left(tsSnstr, 4) & "-" & Right(tsSnstr, 4)

    'Ergebnis uebergeben
    Select Case InfoTyp
    
        Case 1
            GetHardDiskInfo = tsVolname
        Case 2
            GetHardDiskInfo = tsSnstr
        Case 3
            GetHardDiskInfo = tsSysname

    End Select

End Function
Der Aufruf der Funktion gestaltet sich dann wie folgt:
MsgBox GetHardDiskInfo("D",2) 'Liefert die Seriennummer von LW D
oder:
MsgBox GetHardDiskInfo("D:\",2) 'Liefert die Seriennummer von LW D
Viel Spass !!

  Download des VB6
Moduls
 

© '2000 by T. Schindzielorz