Auf Volume zugreifen, ohne den Laufwerksbuchstaben zu kennen
-
Hallo!
Kan man unter Windows auf ein Volume zugreifen, ohne den Laufwerksbuchstaben zu kennen?
Gibt es dort ähnliche Pfade, wie /Volumes/ oder /dev/ ?
LG Xx x xX
-
Wenn man den Laufwerksbuchstaben anhand des Namens herausfinden könnte, würde das natürlich auch was bringen

-
Willst du das mit einem C++-Programm schaffen oder in einer BAT-Datei?
MfG SideWinder
-
Einem C++ Programm.
-
Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Den Laufwerksbuchstaben kann man natürlich auch weglassen ...
Wenn man nicht weiss wo man suchen könnte hilft GetLogicalDrives()
alle vergebenen Laufwerksbuchstaben zu erkennen:http://msdn.microsoft.com/en-us/library/aa364972(v=vs.85).aspx
Irgendwie ist die Frage sehr ungenau; woran ist der gesuchte Pfad denn
genau zu erkennen ?VG
-
Ich will anhand des Namens vom dem Volume (z.B. ein USB-Stick mit dem Namen „NO NAME”) auf den USB-Stick zugreifen können und dort eine Datei erstellen bzw. nacher auch selbige wieder löschen. Unter Linux funktioniert das ja mit /dev/NO NAME und unter Mac OS X mit /Volumes/NO NAME aber unter Windows?
Da bräuchte ich ja den Laufwerksbuchstaben um über D:/ daraufzugreifen zu können.LG
-
Du könntest GetLogicalDrives und ShGetFileInfo kombinieren:
char ch [] = "a:\\"; DWORD drives = GetLogicalDrives(); for(int shift=0;shift<26;++shift,++ch[0]) { if((drives>>shift) & 1) { SHFILEINFO sfi; if(SHGetFileInfo(ch, 0, &sfi, sizeof(SHFILEINFO), SHGFI_DISPLAYNAME)) { // sfi.szDisplayName kann hier ausgewertet und z.B. mit strncmp verglichen werden } } }Vermutlich wird das aber auch in der Registrierung stehen (irgendwo unter HKEY_LOCAL_MACHINE ?), das habe ich auf die Schnelle jedoch nicht gefunden.
-
Steht dann nicht in szTypeName der Name und nicht in szDisplayName?
-
Scheint aber ne sportliche Lösung zu sein.
Unter XP kommt raus z.b:
Ergebnis WinXP
(A:) 3¢-Diskette (C:) SYS (D:) HOMEunter Windows7 dagegen
System (C:) daten (D:) SWAP (E:)wobei ich anmerke, das ich die Laufwerksbuchstaben sehen
wollte und das irgendwo eigeschaltet werden musste ...VG
-
SHGetFileInfo sollte man auch nicht nehmen, da dies immer den "SHELL" Namen liefert, was je nach OS anders ist...
GetVolumeInformation
http://msdn.microsoft.com/en-us/library/aa364993ist das besser!
-
Das sieht schon viel besser aus:
GetLogicalDrives() und GetVolumeInformation() kombiniert und fertig

Der Laufwerksname ist immer in volumeName und muss nicht mühsam zerlegt werden.
Nebeneffekt:
Wechsellaufwerke in denen kein Datenträger steckt, werden nicht gelistet..
-
Ja, das ist viel besser.
Ich habe aber auch zu wenig Erfahrung mit Wechaseldatenträgern auf verschiedenen Versionen von Windows. Naja, vielleicht hat der Code zumindest etwas geholfen, mitGetVolumeInformationumzugehen..