Referenz USB ohne Laufwerksbuchstabe

379
corpico

Meine Kunden haben ein Programm, das auf einem Flash-Laufwerk untergebracht ist. Ich möchte ein Update (MSI oder EXE) senden, das eine Datei auf der Festplatte löscht und durch eine andere ersetzt.

Auf einem Mac ist dies problemlos möglich, da alle externen Laufwerke nach Namen referenziert und im selben Ordner gespeichert werden (z. B. Volumes / MyDrive). Windows verwendet jedoch Laufwerksbuchstaben (F: \ E: \), die sich ändern können, wenn der Client andere Einstellungen hat oder auch nur ein anderes Laufwerk angeschlossen.

Wie kann ich auf das Ziel-Flashlaufwerk verweisen, ohne einen (möglicherweise falschen) Laufwerksbuchstaben verwenden zu müssen?

0
Bitten Sie den Benutzer, den Laufwerksbuchstaben einzugeben, um die Aktualisierung durchzuführen. Oder geben Sie eine Batchdatei an, die sie auf das Flash-Laufwerk kopieren können, um die Aktualisierung zu starten, da die Batchdatei das Laufwerk melden kann, von dem sie ausgeführt wird. Ƭᴇcʜιᴇ007 vor 7 Jahren 0
Ich würde es vorziehen, die Benutzer nicht zu arbeiten (wenn möglich), da die meisten von ihnen nicht mit dem Computer vertraut sind. corpico vor 7 Jahren 0
Versuchen Sie `wmic LogicalDisk, wobei" DriveType = 2 oder DriveType = 3 "DeviceID, DriveType, VolumeName, VolumeSerialNumber` abruft, wenn Sie Ihr Flash-Laufwerk in der Ausgabe (oder in der Ausgabe von` wmic LogicalDisk get / value`) identifizieren können analysieren Sie es mit der 'for / F'-Schleife, um den Laufwerksbuchstaben zu erhalten. JosefZ vor 7 Jahren 1
Fantastische Lösung! Vielen Dank @JosefZ! corpico vor 7 Jahren 0
Bitte schön. Fühlen Sie sich frei, Ihre eigene Antwort zu geben und dann zu erwägen, sie als akzeptiert zu markieren. [Siehe diese Seite] (http://meta.stackexchange.com/questions/5234/) für eine Erklärung, warum dies wichtig ist. JosefZ vor 7 Jahren 0

1 Antwort auf die Frage

0
corpico

Eine ausführliche einzeilige Lösung zum Abrufen von Laufwerknamen in Windows finden Sie im Kommentar von JosefZ.

Am Ende habe ich Java benutzt. Hier ist der relevante Code für zukünftige Referenz:

FileSystemView fsv = FileSystemView.getFileSystemView(); File[] f = File.listRoots(); for(File file : f) System.out.println(fsv.getSystemDisplayName(file));