2016-03-19 3 views
0

Вопрос очень прост, я хочу перечислить все диски на моем компьютере.Как перечислить все диски, даже сотовые телефоны, подключенные к вашему компьютеру?

Мы все знаем, как перечислить диски с:

DriveInfo.GetDrives(); 

Directory.GetLogicalDrives(); 

Но что если мне нужно перечислить свой сотовый телефон, как диск, я могу видеть его на исследователя, так почему нет в списке на результат этого 2 метода?

Я протестировал эти методы с помощью двух сотовых телефонов.

  • Android: LG G4 Stylus LTE (внутренний и SDcard, так что здесь у вас есть 2 дисков)
  • Windows, телефон: Lumia 1020 (без SDcard)

Тем не менее, никакого результата.

Помогите пожалуйста!

+0

DriveInfo не предоставляет способ прослушивания вводов USB-ключей. Взгляните на этот http://stackoverflow.com/questions/620144/detecting-usb-drive-insertion-and-removal-using-windows-service-and-c-sharp – Mainak

+0

Спасибо за ваш комментарий, но он говорит только как определить, когда устройство подключено, мне нужно просмотреть устройство и получить файлы внутри. – Yogurtu

ответ

0

Эти сотовые телефоны не являются дисками, они WPD devices.

Если вы хотите только их указать, Windows включает в себя COM API.

Here’s a C++ sample.

Это можно сделать то же самое без C++ в C# с помощью COM-взаимодействия. Требуется некоторое время для настройки (вам нужно будет ссылаться на две библиотеки COM-типа, PortableDeviceApiLib и PortableDeviceTypesLib и обходить некоторые проблемы с импортером библиотеки COM-типа), а также изучить API, но я как-то сделал это для некоторого клиента, решение работал нормально.


Однако, если вам нужно не только MTP устройства, но все, что материал проводника Windows показывает под «Компьютер» (может быть что угодно, некоторые сторонние приложения и драйверы зарегистрировать свои собственные расширения оболочки добавлять материал в «Этот ПК »), Тогда вам понадобится совершенно другой API, но опять же это COM API. Windows перечисляет IShellFolder interface.

Вот article about something similar в C#.

Смежные вопросы