Достаточно давно, после очередного обновления для Windows 10 Insider Preview, при подключении Android устройств для передачи файлов в режиме MTP система стала не корректно устанавливать драйвера.
При автоматическом определении устройства устанавливался драйвер с ошибкой: Код19. Windows не удается запустить это устройство, так как информация о его конфигурации в реестре неполна или повреждена.
В диспетчере задач это отображается как:
Для решения проблемы приходилось вручную запускать установку драйверов и вместо MTP Device выбирать USB-устройство MTP, после чего телефон корректно определялся в системе и было возможно скопировать и перенести файлы.
Корректно установленный драйвер отображает следующие настройки
Как всегда решение таких проблем решается через пришедшее вдохновение «опять ***» или правильной ссылкой из поисковых систем.
Информацию об устройствах Windows хранит в inf файлах, поэтому вдохновение приказало поискать вредный inf и он был быстрой найдет через поиск текста «MTP Device» по всем INF в c:\windows\inf. В нашем случае это был oem48.inf
Теперь остается только разобраться с удалением из системы информации из oem48.inf. Просто удалить этот файл ничего не даст, так как вся информация находится в реестре.
Немного погуглив обнаруживаю возможность удаления через DISM.
Первым делом получаем информацию об установленных драйверах. Запускаем cmd от администратор и выполняем:
dism /online /get-drivers
Находим врага:
Опубликованное имя : oem48.inf
Исходное имя файла : wpdmtp.inf
Входящие : Нет
Имя класса : WPD
Имя поставщика : Microsoft
Дата : 22.02.2016
Версия : 5.2.5326.4762
К сожалению dism может удалять драйвера только из образов. Выполнить удаление из живой системы не возможно.
Выполним dism /online /remove-driver /Driver:oem48.inf
Ошибка: 50
Эту команду можно использовать только с автономными образами.
Возвращаемся в поиск и находим следующее решение через devcon. К сожалению эта консольная утилита в несколько десятков килобайт входит только в WDK, Visual Studio и Windows SDK. У меня уже был опыт её использования для отключения Bluetooth устройств.
Скачать и ознакомится с полным фукнционалом можно на https://ab57.ru/cmdlist/devcon.html
А мы воспользуемся предоставленным функционалом следующим образом:
devcon dp_delete oem48.inf
Если удаление заблокировано устройством, тогда выполняем devcon -f dp_delete oem48.inf
В одном случае было достаточно запустить автоматическую установку драйвера, чтобы телефон корректно распознался, а второй телефон сразу был корректно распознан и настроен для работы.
Удачи.