Autor Beitrag
Handycommander
ontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1054

Windows XP Pro, Vista
Visual Studio 2008
BeitragVerfasst: So 31.07.05 11:37 
hi,

also ich möchte die hardwareid eines wechseldatenträgers auslesen. wie kann ich das machen?
danke
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: So 31.07.05 11:42 
Was verstehst du unter einer Hardware-ID? Die Seriennummer, die (auch) außen draufsteht?

AXMD
Handycommander Threadstarter
ontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1054

Windows XP Pro, Vista
Visual Studio 2008
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50

WIN XP Prof
D7 Prof
BeitragVerfasst: So 31.07.05 12:46 
Hi,

versuchs mal mit der API-Funktion Suche im MSDN 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

_________________
Ideale sind wie Sterne: Man kann sie zwar nicht erreichen, aber man kann sich sehr wohl an ihnen orientieren.
(Blaise Pascal)
Handycommander Threadstarter
ontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1054

Windows XP Pro, Vista
Visual Studio 2008
BeitragVerfasst: 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.

ausblenden 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, nil0);
  Result := Format('Label = %s   VolSer = %8.8X',
    [VolumeInfo, VolumeSerialNumber])
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(GetHardDiskSerial('c'));
end;
sibbe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50

WIN XP Prof
D7 Prof
BeitragVerfasst: 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

_________________
Ideale sind wie Sterne: Man kann sie zwar nicht erreichen, aber man kann sich sehr wohl an ihnen orientieren.
(Blaise Pascal)
Handycommander Threadstarter
ontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1054

Windows XP Pro, Vista
Visual Studio 2008
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1054

Windows XP Pro, Vista
Visual Studio 2008
BeitragVerfasst: 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?

ausblenden 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..255of Char;
  Buffer: array [0..255of Char;
begin
  if GetVolumeInformation(
    PChar('F:\'),
    Buffer,
    256,
    @SerialNum,
    A,
    B,
    C,
    256then Label1.Caption:=IntToStr(SerialNum);
end;
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: So 31.07.05 16:01 
user profile iconHandycommander 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 Threadstarter
ontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1054

Windows XP Pro, Vista
Visual Studio 2008
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: So 31.07.05 16:07 
Nur, weil ihn Windows als Wechseldatenträger erkennt, muss er keine Seriennummer haben.

AXMD
Handycommander Threadstarter
ontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1054

Windows XP Pro, Vista
Visual Studio 2008
BeitragVerfasst: So 31.07.05 16:14 
kann ich dann überhaupt irgendwas davon auslesen?
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: So 31.07.05 16:17 
user profile iconAXMD 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.

_________________
Ciao, Sprint.
Handycommander Threadstarter
ontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1054

Windows XP Pro, Vista
Visual Studio 2008
BeitragVerfasst: So 31.07.05 16:25 
also das problem hat sich erledigt. habe den speicherstift formatiert und jetzt ließt er die seriennummer aus!