Seriennummer der HDD Ermitteln

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Seriennummer der HDD Ermitteln

Beitrag von MVXA »

Hallo
Ich hab nach nem Codeschnippsel gesucht um die Seriennummer der Festplatte zu ermitteln. Leider funktionierte der Code im CodeArchiv nur unter Windows NT. Hier ne möglichkeit um es auch unter Windows98 zu ermitteln:

Code: Alles auswählen

Procedure.s ReturnHDDSerial(Laufwerk.s)
    DefType.l tmpSerial
    DefType.s tmpLfwrk, tmpFileSystem
    
    tmpLfwrk      = Left(Laufwerk, 1) + ":\"
    tmpFileSystem = Space(256)
    GetVolumeInformation_(@tmpLfwrk, @tmpFileSystem, 255, @tmpSerial, 0, 0, @tmpFileSystem, 255)
    Debug Hex(tmpSerial)
    
    ProcedureReturn Hex(tmpSerial)
EndProcedure


MessageRequester("Festplatte", ReturnHDDSerial("c"))
MessageRequester("Festplatte", ReturnHDDSerial("d"))
Den Code hab ich aus nem VB Beispiel übernomen.

[Edt.]
Habs nochmal in ner Funktion gekapselt
[Edt2:]
Die Seriennummer wird nun in Hexform zurück gegeben. Der zurückgegebener Wert stimmt mit dem Wert in AIDA überein. Daraus schließe ich das der Code nun funktionieren sollte.
Zuletzt geändert von MVXA am 24.11.2004 17:22, insgesamt 1-mal geändert.
Bild
orange-blue
Beiträge: 556
Registriert: 04.09.2004 22:23
Kontaktdaten:

Beitrag von orange-blue »

Ne Frage:
Wenn ich 2 Partitionen hab, die auf der selben HDD, müsste ich doch die selbe Seriennummer zurück bekommen oder?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@orange-blue
ja
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
orange-blue
Beiträge: 556
Registriert: 04.09.2004 22:23
Kontaktdaten:

Beitrag von orange-blue »

lol
Ich bekomm bei der ersten ne 10 stellige nummer 10 stellige Nummer und bei der 2. auch ne stellige aber ne andere mit einem Minus davor. Könnte eine Seriennummer nicht außerdem Buchstaben enthalten?
Wo kann ich ma die seriennummer noch anzeigen lassen?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Mir scheint der Rückgabewert des Codes von Little-Furz ist verkehrt

Unter XP kommt auf jeden Fall ein ganz anderes Ergebnis wie mit Ring seiner Routine. Werde das jetzt gleich nochmal unter 98 Testen
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Eigentlich beginnt die SerienNr. mit Buchstaben und endet mit Zahlen.

Der Code von LittleFurz gibt nur Zahlen zurück, unter XP negative, und für verschieden Partionen derselben Platte unterschiedliche. Unter Win98 kann ich nur mit einer Platte testen. Der Wert ist Positiv, enthält aber nur Ziffern.

Ich würde sagen der Code müßte nochmal kontrolliert werden
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Das Problem ist halt, das diese API (laut ner HP) eine dword variable als tmpSerial dort erwartet(unter win98 und winXP funktioniert das etwas utnerschiedlich :freak:). Unter win98 funktioniert das mit Float GARNICHT aber dafür unter winXP "etwas".

Die Routine von Rings hat ein kleines Problem. Sie funktioniert nur unter NT Systemen /:->

Ich nehme mal an, das tmpSerial n Pointer zu einen String im Memory ist. Kann ja mal wer testen, bin grad an nem PC ohne PB :(
Bild
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Beitrag von Rings »

LittleFurz hat geschrieben:Die Routine von Rings hat ein kleines Problem. Sie funktioniert nur unter NT Systemen /:->
ich seh das als Feature an :

Ausserdem versucht ihr hier Äpfel und Birnen aus der Hdisk zu bekommen.
Meine Routine frägt das Laufwerk (die Firmware) ab, ihr lest jedoch nur die Nummer aus die Windows in der Registry einträgt (Und die verändert werden kann)
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Rings hat geschrieben:ich seh das als Feature an :
Ich sehe das mehr als ein Problem an um ein Programm unter mehreren Systemen lauffähig zu machen. Außerdem hab ich schon gehant, dass das was die beiden Codes zurück geben schon richtig ist.AIDA zeigt die Seriennummer einmal in Hex und einmal in String form an. Darauf schließe ich einfach mal das es die Seriennummer in Hex form und Text form gibt
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@Rings

Wenn sich Deine Routine nicht an Win9x anpassen läßt, ist sie auch nicht besonders flexibel. Wer bereits jetzt Win9x außer Acht läßt, verliert dadurch viele Kunden. Sogar MS bietet inzwischen wieder Updates für Win9x an. Die haben Ausnahmsweise mal einen Fehler korrigiert. Ich selber verwende Win9x allerdings nur noch zu Testzwecken
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten