2014-02-12 4 views
3

Я пытаюсь написать скрипт VBS, что установить USB/Ethernet adapter на Windows 7.Установить инф водителя с VBScript на Windows 7

У меня есть файл .INF для этого устройства.

я впервые попробовал:

Dim WshShell, res 
Set WshShell = WScript.CreateObject("WScript.Shell") 
res = WshShell.Run(WshShell.ExpandEnvironmentStrings("%SystemRoot%") & "\System32\InfDefaultInstall.exe "" C:\Users\Me\Driver.inf """, 1, True) 

res составил 2.

Тогда я искал другой способ сделать это и I found:

Dim WshShell, res 
Set WshShell = WScript.CreateObject("WScript.Shell") 
res = WshShell.Run(WshShell.ExpandEnvironmentStrings("%SystemRoot%") & "\System32\rundll32.exe SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 ""Driver.inf""", 1, True) 

res равен 0, но у меня есть ошибка popup Installation failed.

Что случилось с моим кодом? Для записи сценарий запускается с правами администратора.

EDIT

Я пытался выполнить первую команду непосредственно в строке и получил: The inf file you selected does not support this method of installation..

Ничего не происходит со второй командой в командной строке.

Это очень странно, потому что я могу установить драйвер «вручную», когда я запускаю диспетчер устройств и выберите файл .inf (с предупреждением: Windows can't verify the publisher of this driver software.):

Windows security: Windows can't verify the publisher of this driver software

После того как драйвер установлен , свойство установщика класса показывает NetCfgx.dll,NetClassInstaller. Можно ли его использовать?

Я также пробовал с devcon без успеха (программа возвращает devcon.exe не удалось).

ответ

5

Как об этом способе:

1) Если вы используете «Windows 7», почему бы не воспользоваться драйвером предварительно устроив утилита, которая встроена в ОС? W7 поставляется с утилитой драйвера под названием «PNPUTIL». Выполнение команды как таковой добавит драйверы:

PNPUTIL -a "X:\Path to Driver File\Driver.inf" 

Это будет обрабатывать INF и скопировать CAT/SYS/INF (и любой DLL, EXE и т.д.) в папку «DriverStore» ... которая в том же месте Windows хранит все встроенные драйверы, готовые для автоматической установки plug-and-play.

2) Если это не вариант для вас, найдите «DPInst.exe» (или «DPInst64.exe» для 64-разрядных систем). Они доступны как часть Windows PDK (доступны бесплатно от Microsoft) и будут обрабатывать все INF-файлы в том месте, где вы помещаете файл, и пытаться предварительно сгенерировать их. Этот метод пытается скопировать файлы в местоположения «Драйверы», «CatRoot» и «INF», которые не так надежно ... и иногда может не копировать необходимые DLL в папки «System32» и т. Д. ... но 99% времени (для простых драйверов) он просто работает. Я могу договориться, чтобы отправить их вам, если вы не можете их найти.

Поскольку я нашел вариант (1) выше, это был мой лучший друг.Я использую вариант 2 для ISN принтеров и сканеров Canon USB на наших базовых изображениях и т. Д., Поэтому я знаю, что это тоже работает.

+0

Спасибо за ответ. Я пробовал PNPUTIL, но он не устанавливает мой драйвер. Это странно, потому что оно дает успешное сообщение. Фактически DPInst работает. Я думаю, что я буду использовать это решение. – Maxbester

0

Попробуйте это:

res = WshShell.Run("%Comspec% /C %SystemRoot%\System32\rundll32.exe SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 ""Driver.inf""", 1, True) 
+0

Нет, не работает. У меня такое же сообщение: «Ошибка установки». – Maxbester

1

У меня была такая же проблема, и решить ее в явном виде с помощью ASCII версия InstallHinfSection точки входа:

res = WshShell.Run("%Comspec% /C %SystemRoot%\System32\rundll32.exe SETUPAPI.DLL,InstallHinfSectionA DefaultInstall 132 ""Driver.inf""", 1, True) 

Существует, вероятно, лучшее решение, хотя (как намек на двигатель сценария, который юникода/ASCII вкус использовать).

Также я использую систему EN-US, поэтому это обходное решение может потерпеть неудачу на более экзотических локалях.