Entwickler-Ecke
Windows API - hardwareid auslesen
Handycommander - So 31.07.05 11:37
Titel: hardwareid auslesen
hi,
also ich möchte die hardwareid eines wechseldatenträgers auslesen. wie kann ich das machen?
danke
AXMD - So 31.07.05 11:42
Was verstehst du unter einer Hardware-ID? Die Seriennummer, die (auch) außen draufsteht?
AXMD
Handycommander - So 31.07.05 11:54
ja auf einem wechseldatenträger wie zum beispiel einer MMC karte steht ja aussen keine seriennummer drauf. kann man die dann trotzdem auslesen oder gibts da eine andere ID zum auslesen?
sibbe - So 31.07.05 12:46
Hi,
versuchs mal mit der API-Funktion
GETVOLUMEINFORMATION.
Interessant dürfte da der lpVolumeSerialNumber-Parameter für dich sein.
Inwieweit das aber mit Wechseldatenträgern funktioniert weiß ich nicht, musste halt ausprobieren. :wink:
greetz sibbe
Handycommander - So 31.07.05 13:38
hab des jetzt so probiert. da bekomm ich die seriennummer der wechseldatenträger, wenn sie ne MMC karte ist. aber von einem speicherstift bekomm ich sie nicht.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| function GetHardDiskSerial(const DriveLetter: Char): string; var NotUsed: DWORD; VolumeFlags: DWORD; VolumeInfo: array[0..MAX_PATH] of Char; VolumeSerialNumber: DWORD; begin GetVolumeInformation(PChar(DriveLetter + ':\'), nil, SizeOf(VolumeInfo), @VolumeSerialNumber, NotUsed, VolumeFlags, nil, 0); Result := Format('Label = %s VolSer = %8.8X', [VolumeInfo, VolumeSerialNumber]) end;
procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(GetHardDiskSerial('c')); end; |
sibbe - So 31.07.05 15:25
So hab nochmal ein bisschen rumgeschaut und dabei folgendes gefunden:
Zum einen ist die Seriennummer wahrscheinlich gar nicht die, die du haben willst, weil
Zitat: |
GetVolumeInformation [...] This function returns the volume serial number that the operating system assigns when a hard disk is formatted. To programmatically obtain the hard disk's serial number that the manufacturer assigns, use the Windows Management Instrumentation (WMI) Win32_PhysicalMedia property SerialNumber. |
oder gehe ich falsch in der Annahme, dass du die Seriennummer quasi "vom Werk" haben willst?
Eine Möglichkeit wär also mit WMI an die Sache ranzugehen (wovon ich mal überhaupt keinen Plan hab, ist das in Delphi überhaupt implementiert??)
Eine weitere, in meinen Augen einfachere, Sache wäre, die Daten über die Registry auszulesen. Allerdings hab ich keine Ahnung, was da jetzt genau was ist.
Unter WinXP würd ich unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum mal schauen, unter Win98 war das glaub ich nur HKEY_LOCAL_MACHINE\Enum.
Aber alle Angaben ohne Gewähr :)
Hab auch keinen Speicherstift oder ähnliches, kann es also auch nicht selbst ausprobieren.
greetz sibbe
Handycommander - So 31.07.05 15:33
ja ok. da sind die ganzen seriennummern vorhanden. aber auch von denen, die nicht gerade angeschlossen sind! kann ich das nicht irgendwie machen, dass ich nur die seriennummer bekomme, von denen, die auch gerade angeschlossen sind?
Handycommander - So 31.07.05 15:56
so hab jetzt den code hergenommen.
der funktioniert wunderbar!
ABER:
bei den MMC karten, wird der code ausgelesen, bei einem speicherstift aber nicht!
warum?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.Button1Click(Sender: TObject); var SerialNum: DWord; A,B: DWord; C: array [0..255] of Char; Buffer: array [0..255] of Char; begin if GetVolumeInformation( PChar('F:\'), Buffer, 256, @SerialNum, A, B, C, 256) then Label1.Caption:=IntToStr(SerialNum); end; |
AXMD - So 31.07.05 16:01
Handycommander hat folgendes geschrieben: |
bei den MMC karten, wird der code ausgelesen, bei einem speicherstift aber nicht! |
Und du bist sicher, dass dieser Speicherstift auch einen solchen hat? Schau mal in den Gerätemanager...
AXMD
Handycommander - So 31.07.05 16:05
ja ist er. er wird genauso behandelt wie die mmc karten. also als wechseldatenträger.
aber wenn ich jetzt die seriennummer prüfe, bekomm ich als ergebnis immer 0
AXMD - So 31.07.05 16:07
Nur, weil ihn Windows als Wechseldatenträger erkennt, muss er keine Seriennummer haben.
AXMD
Handycommander - So 31.07.05 16:14
kann ich dann überhaupt irgendwas davon auslesen?
Sprint - So 31.07.05 16:17
AXMD hat folgendes geschrieben: |
Nur, weil ihn Windows als Wechseldatenträger erkennt, muss er keine Seriennummer haben. |
Dann ist aber vermutlich auf dem Datenträger ein Dateisystem wie z.B. FAT oder NTFS. Und dann muss auch eine Volume Seriennummer vorhanden sein.
Handycommander - So 31.07.05 16:25
also das problem hat sich erledigt. habe den speicherstift formatiert und jetzt ließt er die seriennummer aus!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!