首页 文章

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

提问于
浏览
3

我正在尝试编写一个在Windows 7上安装USB/Ethernet adapter的VBS脚本 .

我有这个设备的.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但我弹出错误 Installation failed .

我的代码出了什么问题?对于记录,脚本以管理权限启动 .

EDIT

我试图直接在提示符中执行第一个命令并得到: The inf file you selected does not support this method of installation. .

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

这非常奇怪,因为我可以在启动设备管理器时安装驱动程序"manually"并选择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失败) .

3 回答

  • 0

    怎么样这样:

    1)如果您使用的是“Windows 7”,为什么不利用内置于操作系统中的驱动程序预暂存实用程序? W7附带一个名为“PNPUTIL”的驱动程序实用程序 . 发出这样的命令将添加驱动程序:

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

    这将处理INF并将CAT / SYS / INF(以及任何DLL,EXE等)复制到“DriverStore”文件夹中...这就是Windows存储所有内置驱动程序以备自动插件的相同位置-play instalaltion .

    2)如果这不是您的选项,请查找“DPInst.exe”(或64位系统的“DPInst64.exe”) . 它们作为Windows PDK的一部分提供(可从Microsoft免费获得),并将处理放置文件的位置中的所有INF并尝试预先放置它们 . 此方法尝试将文件复制到“驱动程序”,“CatRoot”和“INF”位置,这些位置不可靠......并且它偶尔无法将所需的DLL复制到“System32”文件夹等...但99%当时(对于简单的驱动程序)它只是工作 . 如果你找不到,我可以安排发给你 .

    由于我找到了上面的选项(1),这是我最好的朋友 . 我在我们的基本图像等上使用选项2来测试佳能USB打印机和扫描仪......所以我知道它也有效 .

  • 1

    我有同样的问题并通过明确使用 ASCII 版本的 InstallHinfSection 入口点来解决它:

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

    但是可能有一个更好的解决方案(比如暗示脚本引擎使用的unicode / ASCII风格) .

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

  • 5

    试试这个:

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

相关问题