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

Вопрос очень прост, я хочу перечислить все диски на моем компьютере.

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

DriveInfo.GetDrives();

Directory.GetLogicalDrives();

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

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

  • Android: LG G4 Stylus LTE (внутренняя и SD-карта, поэтому здесь у вас 2 накопителя)
  • Windows phone: Lumia 1020 (без SD-карты)

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

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

1 ответ

Эти мобильные телефоны - не диски, а устройства WPD.

Если вы хотите перечислить их, Windows включает в себя COM API для этого.

Вот пример C++.

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


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

Вот статья о чем-то похожем в C#.

Другие вопросы по тегам