Home » Tipps & Tricks » System » Hardware » Seriennummer einer Partition ermitteln

Seriennummer einer Partition ermitteln

Folgende Funktion gibt die Seriennummer einer Partition zurück. Ihr muss als Parameter der entsprechende Laufwerksbuchstabe übergeben werden:

function GetSerialNumber(const ADrive: Char): Integer;
var
  SerialNum: DWORD;
  Dummy: DWord;
  Buffer: array[0..255] of Char;
begin
  Result := 0;
  if GetVolumeInformation(PChar(ADrive+':'),
                          Buffer,
                          SizeOf(Buffer),
                          @SerialNum,
                          Dummy,
                          Dummy,
                          nil,
                          0) then
    Result:=SerialNum
  else
    RaiseLastOSError;
end;

Es handelt sich dabei nur um eine Nummer, die bei der Formatierung erzeugt wird, sie kann keinesfalls als eindeutige Identifizierung einer Festplatte dienen. Selbst einzelne Partitionen der physisch gleichen Festplatte bekommen andere Nummern zugewiesen.RaiseLastOSError ist erst ab Delphi 6 verfügbar. Programmierer, die mit älteren Versionen arbeiten müssen an dieser Stelle RaiseLastWin32Error verwenden.Aufgerufen werden kann die Funktion beispielsweise so:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := IntToHex(GetSerialNumber('C'), 8);
end;

Der Rückgabewert wird als 8-stellige Hex-Zahl interpretiert.