hallo, DriveInfo[] allDrives = DriveInfo.GetDrives(); zeigt u.a. USB-Sticks an, aber nicht den Speicher meines Smartphones, der als "Gerät" per usb an den pc angeschlossen und im explorer sichtbar ist. Wie greife ich über den PC auf den Speicher des Smartphones zu? danke für Unterstützung
Karl K. schrieb: > Wie greife ich über den PC auf den Speicher des Smartphones zu? Früher™ konnte Android noch den MSD-Modus am USB-Port. Der wäre in deiner Auflistung drinnen gewesen. Heute macht man eher MTP, damit die Apps am Handy weiterlaufen können, während der PC auf die Daten zugreift. https://de.wikipedia.org/wiki/Media_Transfer_Protocol
"Windows.Devices.Enumeration Namespace Stellt Klassen zum Aufzählen von Geräten bereit." Das müsste es sein. Wie füge ich den Projektverweis hinzu???
Karl K. schrieb: > DriveInfo[] allDrives = DriveInfo.GetDrives(); > > zeigt u.a. USB-Sticks an, aber nicht den Speicher meines Smartphones, > der als "Gerät" per usb an den pc angeschlossen und im explorer sichtbar > ist. > > Wie greife ich über den PC auf den Speicher des Smartphones zu? Das geht so nicht. MTP (media transfer protocol)-Devices werden unter Windows nicht als normale Laufwerke verwaltet. Die erscheinen nur im im Explorer in etwa so, als wären es welche. Dementsprechend gibt es im Shell-API die entsprechende Unterstützung dafür. Dabei handelt es sich allerdings um native COM-Objekte. Ob es einen .Net-Wrapper dafür gibt, das weiß ich leider nicht. Ich vermute allerdings stark: wird es geben...
https://github.com/Bassman2/MediaDevices hab ich da schonmal verwendet. (ist auch als nuget-Paket einbindbar)
der word-macro-aufzeichner ergibt für den Pfad "Dieser PC\KINGKONG MINI2\SD-Karte\kmv\":
1 | Sub Makro68() |
2 | '
|
3 | ' Makro68 Makro |
4 | '
|
5 | '
|
6 | Documents.Open FileName:= _ |
7 | "C:\Users\karl\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\9360BC6C.tmp" _ |
8 | , ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _ |
9 | PasswordDocument:="", PasswordTemplate:="", Revert:=False, _ |
10 | WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _ |
11 | wdOpenFormatAuto, XMLTransform:="", Encoding:=1252 |
12 | Selection.EscapeKey |
13 | Selection.EscapeKey |
14 | ' ActiveWindow.Close |
15 | End Sub |
in c# umgesetzt
1 | string dir = @"C:\Users\karl\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\"; |
2 | if (Directory.Exists(dir))
|
3 | {
|
4 | string[] files = Directory.GetFiles(dir);
|
5 | foreach (var file in files)
|
6 | {
|
7 | FileInfo info = new FileInfo(file);
|
8 | listBox2.Items.Add(info.Name);
|
9 | }
|
10 | }
|
Damit bekomme ich Dateien wie folgt angezeigt: C:\Users\karl\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\3D70 D199.dat Hat vielleicht och jemand eine Idee hierzu? Was ist INetCache?
:
Bearbeitet durch User
Karl K. schrieb: > Hat vielleicht och jemand eine Idee hierzu? Was ist INetCache? Dateien, die per MTP auf dem Handy erreichbar sind, sind keine "echten" Dateien am PC. Normale Anwendungen können die nicht öffnen. Darum werden die auf einen temporären Ort umkopiert, dann kriegt die Applikation die Kopie zum damit Arbeiten, und ggfs. wird die Datei beim Beenden der Applikation wieder zurück auf Handy geschoben. Wo dieser temporäre Pfad genau liegt, ist ein Implementationsdetail, auf das du dich nicht verlassen solltest: Geh den offiziellen Weg.
Danke für die konstruktiven Beiträge. Lösungsweg: how-to-manage-files-on-an-mtp-portable-device Man braucht eine Erweiterung: https://www.nuget.org/packages/MediaDevices/ muss diese in die packet-manager-console laden - und dann geht es. Mein Problem war die Installation der Erweiterung.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.