Vbscript 自动设备驱动程序搜索功能

Vbscript 自动设备驱动程序搜索功能,vbscript,cmd,Vbscript,Cmd,基本的Windows“更新驱动程序”向导允许指向文件夹并对正确的.INF文件执行递归搜索。有人知道是什么允许用VBS或CMD调用它吗 我知道rundll32.exe setupapi.dll,InstallHinfSection可以用于自动安装驱动程序,但据我所知,这需要指向特定的路径和文件 我当前有一个vbscript,它使用WMI扫描ConfigManagerRorCode=28(设备管理器中状态为“此设备的驱动程序未安装”)的脚本 因此,本质上,我想找到一种方法,将那些代码为28的设备与“

基本的Windows“更新驱动程序”向导允许指向文件夹并对正确的.INF文件执行递归搜索。有人知道是什么允许用VBS或CMD调用它吗

我知道rundll32.exe setupapi.dll,InstallHinfSection可以用于自动安装驱动程序,但据我所知,这需要指向特定的路径和文件

我当前有一个vbscript,它使用WMI扫描ConfigManagerRorCode=28(设备管理器中状态为“此设备的驱动程序未安装”)的脚本


因此,本质上,我想找到一种方法,将那些代码为28的设备与“更新驱动程序”向导中使用的任何函数联系起来。一个示例代码很好,但是指向了正确的方向,我至少有一个开始。非常感谢。

我不希望在VBScript中提供类似的内容。毕竟,当你要实现自动化时,你应该知道你要做什么(在本例中:知道驱动程序的位置)。但是,您可以自己轻松实现对.inf文件的递归搜索:

Set fso = CreateObject("Scripting.FileSystemObject")

Function SearchForInf(fldr)
  fpath = Null

  For Each f In fldr.Files
    If LCase(fso.GetExtensionName(f.Name)) = "inf" Then
      fpath = f.Path
      Exit For
    End If
  Next

  If IsNull(fpath) Then
    For Each sf In fldr.SubFolders
      fpath = SearchForInf(sf)
    Next
  End If

  SearchForInf = fpath
End Function

inf = SearchForInf(fso.GetFolder("C:\path\to\your\driver"))

更新驱动程序有两种方法,即自动更新和手动更新。通过使用自动更新,Windows将通过Internet或Windows通用驱动程序查找您的驱动程序。但是最好的选择是手动更新驱动程序,这需要选择INF所在的路径。在这种情况下,如果您的设备具有正确的驱动程序,Windows将减少查找设备驱动程序的时间,并且更新设备的准确率为100%。

Windows在驱动程序向导中使用的过程已经自动化(即,它搜索文件夹和子文件夹,并安装正确的INF)。除了起始文件夹外,不需要知道INF名称或路径。我非常怀疑VBS不能处理Windows在GUI中以极简的交互方式完成的任务。(从字面上说,唯一需要的是选择起始文件夹)。如果我有办法让Windows返回它应该查找的INF,那么您的解决方案实际上可能会有一些价值。Windows显然是以某种方式从设备上获取这些信息的。基本上,我可以搜索代码为28的设备,让windows返回正确的INF名称,使用递归搜索,然后运行dll32.exe setupapi.dll,InstallHinfSection可能可以处理其余的。关于获取INF查询有什么想法吗?别管INF查询了。我只记得Windows只是扫描所有找到的INF,寻找应该写入其中的硬件ID。我想我可以,因为我可以从WMI获取HWID。仍然很惊讶没有更简单的解决方案。