Übrigens diese Serial ist Tatsächlich an die Partition gebunden.
Und so könnte man sie alternativ auslesen!
Funktioniert nur bei FAT32 und
WinNT-Systemen (2k, XP)
Delphi-Quellcode:
stm := TFileStream.Create('\\.\D:', fmOpenRead or fmShareDenyNone);
try
stm.Read(buf, 512);
lst.Items.Add(Format('Serial: %s', [IntToHex(PCardinal(@buf[$43])^, 8)]));
finally
stm.Free;
end;
Für FAT12, FAT16, NTFAS müssten andere Werte wie 43h eingesetzt werden.
Welches Laufwerk es nun ist kann man auch an dem 2 Byte erkennen. Oder man interpretiert den kompletten Header und Prüft ob eine gültige Kennung in FileSystemName herauskommt.