Per Mausklick bewerten und Feedback geben
MSDN
MSDN Library
Entwicklerbibliothek
Windows API
 Seriennummer eines Datenträgers erm...

  Anzeige für geringe Bandbreite anschalten
Seriennummer eines Datenträgers ermitteln
Veröffentlicht: 02. Mrz 2002 | Aktualisiert: 16. Jun 2004
Von Mathias Schiffer

Die Seriennummer eines Datenträgers können Sie für verschiedene Zwecke einsetzen:
Beispiele wären ein einfacher Kopierschutz für Ihre Software, oder um Aktionen nur auf einem bestimmten System auszuführen (z.B. das Schreiben einer Log-Datei nur bei Programmablauf auf einem spezifischen Entwicklungsrechner).
Die Funktion GetSerialNumber gibt Ihnen die Seriennummer des Datenträgers im Laufwerk als Long-Wert zurück.

Als Übergabewert erhält die Funktion lediglich den Laufwerksbuchstaben. Da der Datentyp Long unter Visual Basic vorzeichenbehaftet ist, kann der Rückgabewert als negative Zahl erscheinen. Für eine Darstellung der Seriennummer eines Datenträgers eignet sich daher eine hexadezimale Darstellung besser.
Dazu kapselt GetSerialNumberString durch einen einfachen Aufruf der Funktion Hex$
die Routine GetSerialNumber:

' Notwendige API-Deklaration: 
Private Declare Function GetVolumeInformation _ 
  Lib "kernel32" Alias "GetVolumeInformationA" ( _ 
  ByVal RootPathName As String, _ 
  ByVal VolumeNameBuffer As String, _ 
  ByVal VolumeNameSize As Long, _ 
  ByRef VolumeSerialNumber As Long, _ 
  ByRef MaximumComponentLength As Long, _ 
  ByRef FileSystemFlags As Long, _ 
  ByVal FileSystemNameBuffer As String, _ 
  ByVal FileSystemNameSize As Long _ 
  ) As Long 
' --- Sourcecode 
Private Function GetSerialNumber(ByVal Drive As String) As Long 
' Liefert die Seriennummer eines Datenträgers zurück, dessen 
' Laufwerksbuchstabe übergeben wird. Auch die Übergabe einer 
' vollständigen Pfadangabe zu einem Verzeichnis oder einer Datei 
' auf dem Datenträger ist möglich. Bitte beachten Sie, dass eine 
' Seriennummer unter VB als negative Zahl erscheinen kann, da der 
' Datentyp Long vorzeichenbehaftet ist. Wählen Sie für eine Dar- 
' stellung der Seriennummer eine Darstellung als Hexadezimalzahl. 
Dim lDummy As Long 
  ' Hauptverzeichnis-Angabe aus dem übergebenen Parameter erstellen 
  If LenB(Drive) Then 
    If Left$(Drive, 2) <> "\\" Then 
      Drive = Left$(LTrim$(Drive), 1) & ":\" 
    End If 
  End If 
  ' Die Seriennummer des Datenträgers in diesem Laufwerk ermitteln 
  GetVolumeInformation Drive, vbNullString, _ 
                       0, GetSerialNumber, _ 
                       lDummy, lDummy, _ 
                       vbNullString, 0 
End Function 
Private Function GetSerialNumberString(ByVal Drive As String) As String 
' Liefert die hexadezimale Darstellung  der Seriennummer eines Datenträgers 
' zurück, dessen Laufwerksbuchstabe übergeben wird. Auch die Übergabe einer 
' vollständigen Pfadangabe zu einem Verzeichnis oder einer Datei 
' auf dem Datenträger ist möglich. 
  GetSerialNumberString = Hex$(GetSerialNumber(Drive)) 
End Function

© 2009 Microsoft Corporation. Alle Rechte vorbehalten. Nutzungsbedingungen  |  Markenzeichen  |  Informationen zur Datensicherheit
Page view tracker