Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi USB-Stick und das Laufwerk (https://www.delphipraxis.net/179289-usb-stick-und-das-laufwerk.html)

Mattze 25. Feb 2014 06:13

USB-Stick und das Laufwerk
 
Hallo,

ich finde es einfach mal wieder nicht...

Wenn ein USB-Stick neu angesteckt wird, kriegt er von Windows einen Laufwerksbuchstaben verpasst, unter dem es nun auch später wieder bei Anstecken angesprochen wird.

Wie bekommt man diese Zuordnung eines Laufwerksbuchstaben zu einem gegebenen USB-Stick raus?
Das muss doch irgendwo in der Registry stehen, aber ich finde es eben nicht.

Weiß jemand etwas genaueres?

Gruß
Mattze

Sir Rufo 25. Feb 2014 06:21

AW: USB-Stick und das Laufwerk
 
Das sollte hier stehen
Code:
HKLM/System/MountedDevices

Mattze 25. Feb 2014 07:31

AW: USB-Stick und das Laufwerk
 
Hallo Sir Rufo,

danke, aber...
Da habe ich (natürlich) als erstes gesucht.
Leider steht da als Datum ein Reg_Binary, aus dem nicht erkennbar ist, welches Laufwerk dem Wert zugeordnet ist bzw. umgekehrt. (Falls man aus der GUID im Wert den Sticknamen kriegt, findet man doch keine Laufwerkszuweisung unter diesem Wert.)
Probiert unter Win7 pro.

Das scheint es also nicht zu sein - muss man wahrscheinlich wieder über mindestens drei Ecken gehen.


Noch andere Vorschläge?

Gruß
Mattze

Sir Rufo 25. Feb 2014 07:56

AW: USB-Stick und das Laufwerk
 
Welchen Sticknamen soll sich das System denn speichern/merken und wozu?

Wenn du dem Stick an einem anderen System umbenennst, dann ist der gespeicherte Name obsolet.

jobo 25. Feb 2014 09:07

AW: USB-Stick und das Laufwerk
 
Mein Halbwissen:
Ich kann einem USB Stick unter Windows
- einen Laufwerksbuchstaben zuordnen
- ein Partitionsnamen(?) vergeben (oder ist es ein Stichname?)

Der Name wird offenbar auf dem Stick abgelegt.
Die Laufwerkszuordnung muss aber wohl in der Registry definiert sein.
Das sollte man dann ja wohl auch finden können.

RWarnecke 25. Feb 2014 09:11

AW: USB-Stick und das Laufwerk
 
Ich würde hier über WMI gehen. Das wäre eine andere Alternative.

Mattze 25. Feb 2014 09:22

AW: USB-Stick und das Laufwerk
 
Hallo,

FALSCH! Es ist NICHT der Name, den man normalerweise selbst vergibt, sondern der Name, der vom Hersteller fest vorgegeben wird.
Schau mal unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\U SBSTOR.
Da wird ein Schlüssel aus diesem Namen zusammengebastelt.
Und dieser Name steht auch als Datum irgendwo (mehrmals) in der Registry. Auch bei nicht angestecktem Stick!
(Wie die das unterscheiden, wenn ein namensgleicher Stick dabei ist, weiß ich (noch) nicht.)

Und um die Zuordnung des Laufwerksbuchstabens zu diesem Namen geht es.
Bsp:
Ich habe einen USB3-Stick "Transcend 16GB", was auch in der Registry steht. Den habe ich aber "Win7PE" genannt, was natürlich nicht in die Registry gehört und von "Transcend 16GB" völlig unabhängig ist. Das gibt es trotzdem, auch noch. An diesen Namen kommt man nicht so ohne weiteres ran!
Und um die Zuordnung "Transcend 16GB" und Laufwerksbuchstaben geht es.
Und, wie gesagt, das finde ich in der Registry nicht. Dass es dort irgendwie stehen müsste, erwarte ich auch!

WMI dachte ich mir auch, aber, wenn der Stick nicht angesteckt ist, also hardwaremäßig für den PC gar nicht da ist? Wie soll das gehen? Welche WMI-Klasse soll denn das machen?

Gruß
Mattze

himitsu 25. Feb 2014 09:31

AW: USB-Stick und das Laufwerk
 
In der Registry sollte der Gerätename stehen, also der vom USB-Device.
Und mit den Gerätedaten (Name, aber vermutlich/bestimmt eher mit der Serial/GeräteID) und manchmal auch mit dem Anschlußpunkt (USB-Port) wird verknüpft wie und wo, oder ob überhaupt, die darauf befindlichen Partitionen (es muß nicht nur Eine sein) gemounted werden. Das kann ein Laufwerksbuchstabe sein oder z.B. auch ein NTFS-Verzeichnis.

Was man im Explorer sieht, ist der Name/Bezeichner im Dateisystem, also quasi von der formatierten Partition. Und falls da kein Bezeichner angeben ist, dann wird ein Gerätebezeichner vom System angezeigt, welches entweder der Gerätename ist oder ein Bezeichner für den Gerätetyp (je nach dem, wie Windows garde Lust drauf hat ... wer kennt denn nicht den "Lokaler Datenträger").

Mattze 25. Feb 2014 10:44

Hallo himitsu,

danke!
2. Teil: Sage ich doch! Das ist aber besser beschrieben.

1.Teil: Ja, und genau diese Verknüpfung kriege ich nicht raus.
Bei angestecktem Stick ist das sicher kein Problem (über IOControl z. Bsp.),
aber das muss auch irgendwie ohne angesteckten Stick rauszukriegen sein.
(Es gibt Software, die damit etwas macht. Also muss es gehen!)

Gruß
Mattze

Sir Rufo 25. Feb 2014 11:20

AW: USB-Stick und das Laufwerk
 
Du musst dir die DiskId holen
Code:
HKEY_LOCAL_MACHINE\
  SYSTEM\
    CurrentControlSet\
      Enum\
        USBSTOR\
          <Name>\
            <ID>\
              Device Parameters\
                Partmgr
Ich habe hier aktuell gerade
Code:
HKEY_LOCAL_MACHINE\
  SYSTEM\
    CurrentControlSet\
      Enum\
        USBSTOR\
          Disk&Ven_TwinMOS&Prod_MOBILE_DISK&Rev_1.11\
            2B4015EF3D98EAB9&0\
              Device Parameters\
                Partmgr
                  DiskId={6af28d05-6431-11e1-99eb-080027b4f06d}
Diese DiskId findest du dann wieder unter
Code:
HKEY_LOCAL_MACHINE\
  SYSTEM\
    MountedDevices
      \??\Volume{6af28d07-6431-11e1-99eb-080027b4f06d}=<REG_BINARY-Wert>
Wenn du jetzt alle Einträge \DosDevice\ auflistetet, die diesen REG_BINARY-Wert haben, dann hast du auch die verknüpften Laufwerksbuchstaben


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz