«Произошла ошибка при установке устройства: не удаётся найти указанный файл» — лечение

Проекту исполнилось 15 лет! Поддержать проект материально, проспонсировать проекты Автора или сделать ему подарок можно на этой странице: "Донаты и Спонсорство, Список Желаний".

Число просмотров: 34 958 

Ошибка при установке устройства: не удаётся найти указанный файл

Ошибка при установке устройства: не удаётся найти указанный файл

Иногда при установке драйверов под Windows возникает глупая ошибка «Не удаётся найти указанный файл». Когда-то я плотно засел с ней и никак не могу найти её решения. Всё что предлагалось мега-админчегами — восстановление системы или переустановка Windows. Решение попалось на каком-то из форумов, и где-то далеко в яндексе. Решил поделиться с народом.

Итак, ставим для примера AVR Dragon и получаем ошибку. Перезагрузка не помогает, переподключение — тоже. Система бесконечно пытается поставить устройство. Другие драйвера при установке через Inf-файлы тоже не ставятся с такой же ошибкой. Иногда удаётся поправить положение после установки каких-нибудь программ или драйверов через их штатный установщик Setup.Exe. Раньше у меня когда-то роль чинилки выполнял установщик драйверов для ZyXel OMNI USB. ^_^

Оказывается, установщик Inf-файлов после выполнения секции копирования файлов пытается обратиться к разделу реестра HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ RunOnce (записан через пробелы чтобы не было проблем с переносом строк), независимо от того нужен ли он конкретно этому установщику или нет. Если раздела не существует — такая ошибка и возникает. А называется она про «Не удаётся найти указанный файл» только потому что если ключ в реестре не найден, функция Reg(Open|Create)KeyEx возвращает ошибку ERROR_FILE_NOT_FOUND. А системная FormatMessage как раз и выдаёт для неё текст про файл.

Раздел RunOnce в корне реестра HKEY_LOCAL_MACHINE

Раздел RunOnce в корне реестра HKEY_LOCAL_MACHINE

Раздел в реестре могут выносить всякие чистилки автозагрузки и прочие подобные программы. А я иногда по дурости выносил пустые разделы реестра и сам — если там нечему запускаться, то нахрена он нужен? Оказалось — нужен! Ну а какой-нибудь Setup.Exe хотел туда например записать какие-то действия для обновления софта при следующей загрузке системы — и создавал его. Вот и весь секрет. Восстанавливаем раздел назад — и вуаля. Без перезагрузки, шаманства и переустановки системы — драйвера вдруг встали как надо.

После восстановления раздела - всё в порядке

После восстановления раздела - всё в порядке

Вот и всё!

Проекту исполнилось 15 лет! Поддержать проект материально, проспонсировать проекты Автора или сделать ему подарок можно на этой странице: "Донаты и Спонсорство, Список Желаний".

7 Отзывов на “«Произошла ошибка при установке устройства: не удаётся найти указанный файл» — лечение”


  • 1 Atomny

    Да, реестр, те еще дебри!
    Иерархическая база данных, блин.
    Без острой надобности стараюсь не трогать :)

  • 2 CS  [Москва]

    Правильно! Главное правило настоящего мастера: «Работает — НЕ ТРОЖЬ!»

  • 3 vovvan

    Спасибо огромное
    я уж подумал что прийдется Винду переустанавливать
    а оказалось что моя прога чистилка вместо того чтобы заблокировать ключ автозапуска в реестре заблокировала всю ветку RunOnce
    а отсюда ипроблемы
    если бы не вы…
    вообщем огромный респект за проделанную работу!!!!

  • 4 CS  [Москва]

    На здоровье!

  • 5 cathode

    мвах, спасибо )
    простое и гениальное решение. уж думал «инфошки» ковырять и сличать с системными либами, смотреть, какой не хватает ). вебкамера завелась ).
    зы. зарегался, специально, чтобы отблагодарить )

  • 6 Miroko

    а подскажи пожалуйста как восстановить эту ветку реестра?)

  • 7 CS  [Москва]

    А просто встаёшь курсором на раздел HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows CurrentVersion, тыкаешь правой кнопкой, выбираешь Создать -> Радел. Создаётся херня под именем Новый радлел #1. Вот туда вписываешь сразу нужное нам имя — RunOnce и жмакаешь Enter.
    Если вдруг ошибся или не успел — то переименовать раздел можно, если поставить на него курсор и нажать F2 на клавиатуре.
    Ну и под конец надо убедиться, что имя и путь раздела правильные (как в статье и на скриншоте).

Оставить отзыв

Вы должны войти на блог, чтобы оставить комментарий.