Можно ли удалить драйвер устройства через раздел INF?

7047
coelhudo

На MSDN указано, что для установки INF-файлов в Windows XP или более поздних версиях существует два метода:

  • Программно через функцию SetupCopyOEMInf.
  • Добавьте запись с именем CopyInf в раздел INF.

Есть ли в разделе inf эквивалентная запись для удаления файлов inf, аналогичная функции SetupUninstallOEMInf ?

Я нашел это решение с помощью SetupUninstallOEMInf, но оно мне не подходит.

5

2 ответа на вопрос

1
Synetech

Ну, это зависит от .infфайла (некоторые могут вообще не иметь функции удаления), но вы всегда можете попробовать одно из следующих:

rundll32 setupapi.dll,InstallHinfSection DefaultUninstall 132 <driver.inf>  rundll32 advpack.dll,LaunchINFSection <driver.inf>,UnInstall  rundll32 syssetup.dll,SetupInfObjectInstallAction Uninstall.NT 4 <driver.inf> 

(Конечно, замените имя файла, включая кавычки, если необходимо.)

Правильно, но я не нашел ни одной записи, которая явно удаляла бы oemXX.inf, сгенерированный записью CopyInf. Я могу удалить файлы * .sys, которые были скопированы в% SystemRoot% \ System32 \ drivers с записью CopyFiles. Есть запись Delfiles, но она работает только тогда, когда я знаю, какие файлы мне нужно удалить. coelhudo 12 лет назад 0
Вы спрашиваете об автоматическом удалении `oem * .inf` из` \ Windows \ INF`? Я никогда не видел, чтобы это произошло, особенно с вещами, которые устанавливаются через файлы `.inf` вместо установщиков` .exe` или `.msi`. Вы можете открыть их в текстовом редакторе и удалить те, которые больше не применяются. Synetech 12 лет назад 0
Да, мне нужно, чтобы это было интегрировано в скрипт NSIS (установщик от nullsoft). Это должно быть выполнено автоматически, когда мое приложение удалено. coelhudo 12 лет назад 0
Ах я вижу. Хорошо, если вы пишете свой собственный (не) установщик, то просто добавьте строку для удаления файла `.inf`. Вы можете запросить значение `InfPath` рассматриваемого устройства в ветке реестра` HKLM \ SYSTEM \ ControlSet001 \ Control \ Class`, чтобы узнать, для чего предназначено имя файла `oem * .inf`. Synetech 12 лет назад 0
Я не нашел ничего похожего на oem * .inf в той ветке реестра (windows xp и windows 7), которая была сгенерирована при установке. Есть ли другое место, где я могу найти соответствующее имя oem? coelhudo 12 лет назад 0
Вы уверены, что устройство было установлено? Вы уверены, что * есть * файл `oem * .inf`? Выполните поиск в `\ Windows \ inf \` файлах `oem * .inf`, которые содержат имя устройства (или просто проверьте их все в блокноте, если их всего несколько). Synetech 12 лет назад 1
Я еще не видел установки драйвера `.inf` (в отличие от` .inf`s, который устанавливает некоторые компоненты системы), в которой есть раздел удаления. Так что эти команды совершенно бесполезны. ivan_pozdeev 6 лет назад 0
0
ivan_pozdeev

Нет. INF-файлы драйверов обычно не содержат раздел удаления. В соответствии с Как удалить .inf файлы из системы и как устройства и драйвера Пакеты Uninstalled | Microsoft Docs, DiUninstallDeviceиSetupUninstallOEMInf есть способы, чтобы удалить устройство и пакет драйверов, соответственно.

Из консоли вы можете вызвать devconпоследнюю версию как минимум 6(из Windows 8.x DDK; подтверждено, что она работает в XP):

devcon [-f] dp_delete oemXXX.inf 

( -fпринудительное удаление, даже если драйвер используется)

Смотрите быстрый способ установки DevCon.exe? Как скачать утилиту, если вам нужно сделать это вручную.

Из пакета установщика вам нужно использовать средства, предоставляемые платформой установщика, которые будут вызывать эти API для вас.