在Windows 7上使用VBScript安装inf驱动程序

4

我正在尝试编写一个VBS脚本,在Windows 7上安装一个USB/Ethernet适配器

我有这个设备的.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。

然后我找到了另一种方法来做到这一点,我发现了这个

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,但我收到了一个错误弹窗安装失败

我的代码有什么问题?脚本是以管理员权限启动的。

编辑

我尝试直接在提示符中执行第一个命令,结果得到:您选择的 inf 文件不支持此安装方法。

第二个命令在提示符中没有任何反应。

这非常奇怪,因为当我启动设备管理器并选择inf文件(带有警告:Windows 无法验证此驱动程序软件的发布者。)时,我可以“手动”安装驱动程序:

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

一旦驱动程序安装完成,类安装程序属性显示NetCfgx.dll,NetClassInstaller。它可以使用吗?

我还尝试过devcon,但没有成功(程序返回devcon.exe失败)。

3个回答

5
这样怎么样:
1) 如果您正在使用“Windows 7”,为什么不利用操作系统中内置的驱动程序预分配实用程序呢? W7附带了一个名为“PNPUTIL”的驱动程序实用程序。执行以下命令将添加驱动程序:
PNPUTIL -a "X:\Path to Driver File\Driver.inf"

这将对INF文件进行处理,并将CAT/SYS/INF文件(以及任何DLL、EXE等)复制到“DriverStore”文件夹中...这与Windows存储所有内置驱动程序的自动插拔安装位置相同。
如果这不是你的选择,可以寻找“DPInst.exe”(或64位系统的“DPInst64.exe”)。它们作为Windows PDK的一部分提供(可从Microsoft免费获取),并将处理你放置文件的位置中的所有INF文件并尝试将它们预先设置。此方法会尝试将文件复制到不太可靠的“Drivers”、“CatRoot”和“INF”位置...它可能偶尔无法将所需的DLL复制到“System32”文件夹等位置...但在99%的情况下(对于简单的驱动程序),它只是有效的。如果你找不到它们,我可以安排发送给你。
自从我发现了上述选项(1),它已成为我的好帮手。我使用选项2来在我们的基础映像上安装佳能USB打印机和扫描仪等...所以我知道这也可以使用。

谢谢回复。我尝试了PNPUTIL,但它无法安装我的驱动程序。这很奇怪,因为它会显示安装成功的消息。实际上,DPInst可以正常工作。我想我会使用这个解决方案。 - Maxbester

1

我遇到了同样的问题,并通过显式使用InstallHinfSection入口点的ASCII版本来解决它:

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

也许有更好的解决方案,比如提示脚本引擎使用哪种Unicode / ASCII字符集。

此外,我正在使用EN-US系统,因此这种解决方法可能在更奇异的区域设置上失败。


0

试试这个:

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

不行。我收到了相同的消息:“安装失败”。 - Maxbester

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接