无忧启动论坛

 找回密码
 注册
搜索

请问下有没有命令行程序可以实现安装过时驱动这个功能?

查看数: 8044 | 评论数: 38 | 收藏 2
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-3-25 22:53

正文摘要:

本帖最后由 liuzhaoyzz 于 2021-3-25 22:54 编辑 请问下有没有命令行程序可以实现安装过时驱动这个功能? 比如说我想安装svbus驱动,怎么用pecmd/dpinst/drvload/devcon/PnPUtil实现? 试了下没有成功。 ...

回复

liuzhaoyzz 发表于 2021-4-6 11:29:33
那个“始终信任来自xxxx的软件”复选框,无论是否勾选,都不影响svbus驱动的安装,无所谓了。
liuzhaoyzz 发表于 2021-4-4 18:03:55
527104427 发表于 2021-4-4 09:03
没点,貌似也没啥副作用。
如有需要,你可以再模拟点击一次。

5大,刚才特意测试了下,那个“始终信任来自xxxx的软件”复选框,无论是否勾选,都不影响svbus驱动的安装,所以我没有问题了。

点评

刚刚看了一下,这个控件是由DirectUI界面库创建的。应该是嵌入式的吧,不是标准控件,无法通过常规手段操作,只能通过研究DirectUI SDK来搞,这麻烦就大了去了,果断放弃吧。 [attachimg]477718[/attachimg]  详情 回复 发表于 2021-4-4 18:27
liuzhaoyzz 发表于 2021-4-4 12:56:53
527104427 发表于 2021-4-4 09:03
没点,貌似也没啥副作用。
如有需要,你可以再模拟点击一次。

再点一次?问题是不知道原来是否是选中状态啊?还要判断,有点麻烦。
liuzhaoyzz 发表于 2021-4-4 06:05:33
另外想请问下5大,你的脚本,是否会自动勾选那个“始终信任来自xxxx的软件”这个复选框呢?

点评

没点,貌似也没啥副作用。 如有需要,你可以再模拟点击一次。  详情 回复 发表于 2021-4-4 09:03
liuzhaoyzz 发表于 2021-3-31 08:27:27
527104427 发表于 2021-3-30 23:13
把这功能加进 ChkMbrPbr 吧。顺手再把前段时间弄的工具丰富进去。

1.限制PECMD版本为:[201201.88.05. ...

感谢5大!
liuzhaoyzz 发表于 2021-3-29 16:29:05
狼人72105 发表于 2021-3-29 16:27
Devcon dpinst 都试了没?

已经用devcon64搞定了。
dpinst不行。

点评

把这功能加进 ChkMbrPbr 吧。顺手再把前段时间弄的工具丰富进去。 1.限制PECMD版本为:[201201.88.05.85] Build: [X86 U 2021-03-26] 2.二进制爆破ghost,禁止自动分卷: ChkMbrPbr -CrackGhost D:\gho  详情 回复 发表于 2021-3-30 23:13
狼人72105 发表于 2021-3-29 16:27:54
试了,没有办法,那就玩完。。。
狼人72105 发表于 2021-3-29 16:27:12
Devcon dpinst 都试了没?

点评

已经用devcon64搞定了。 dpinst不行。  详情 回复 发表于 2021-3-29 16:29
liuzhaoyzz 发表于 2021-3-29 07:15:01
527104427 发表于 2021-3-29 00:21
可以模拟鼠标点击:

#code=936T950

5大厉害,果然可以!感谢!
dos时代菜鸟 发表于 2021-3-28 19:50:09
liuzhaoyzz 发表于 2021-3-28 18:18
有点小问题,批处理是流程化执行的,pecmd必须作为一个守护进程提前打开,然后批处理调用devcon64执行安 ...

pecmd 可以用多线程监视 ,查看窗口出现了,再传递按键。
liuzhaoyzz 发表于 2021-3-28 18:18:27
dos时代菜鸟 发表于 2021-3-28 15:22
PECMD是可以,找出那个窗口,发送个按键,是可以做到的。再有就是能否关闭相关安全服务,来避免窗口弹出 ...

有点小问题,批处理是流程化执行的,pecmd必须作为一个守护进程提前打开,然后批处理调用devcon64执行安装程序,安装过程中才会弹出对话框,如果pecmd放在后面,可能执行不了,因为不确认的话,批处理流程走不下去,进行不到下一个语句。
我也曾经想过有没有注册表或者组策略可以用命令行避免这个对话框,但我不知道在哪里。

点评

可以模拟鼠标点击: #code=936T950 ENVI^ EnviMode=1 ENVI^ ForceLocal=1 SET$ &NL=0D 0A SET$ &TAB=09 IFEX #%&bx64%=0, {* ENVI &Devcon=%&CurDir%\devcon.exe ENVI &DevId="ROOT\svbusx86" }! {  详情 回复 发表于 2021-3-29 00:21
pecmd 可以用多线程监视 ,查看窗口出现了,再传递按键。  详情 回复 发表于 2021-3-28 19:50
liuzhaoyzz 发表于 2021-3-28 18:14:22
dos时代菜鸟 发表于 2021-3-28 15:21
如果先判断下系统是否已经装有这个驱动,如果有,就不再安装了, 就不会有需要重启的情况了,

现在就是判断系统里面是否已经安装了svbus驱动,在再做相应处理。
红毛的pecmd和我写的批处理脚本都是这样做的。
dos时代菜鸟 发表于 2021-3-28 15:22:56
本帖最后由 dos时代菜鸟 于 2021-3-28 15:24 编辑
liuzhaoyzz 发表于 2021-3-28 11:17
au3/ahk都可以实现模拟按键。批处理其他的一些功能需要调用pecmd,5大已经写好的有现成的,所以想直接用p ...

PECMD是可以,找出那个窗口,发送个按键,是可以做到的。再有就是能否关闭相关安全服务,来避免窗口弹出,因为可能安全服务级别不同,窗口内容不一样。

点评

有点小问题,批处理是流程化执行的,pecmd必须作为一个守护进程提前打开,然后批处理调用devcon64执行安装程序,安装过程中才会弹出对话框,如果pecmd放在后面,可能执行不了,因为不确认的话,批处理流程走不下去,  详情 回复 发表于 2021-3-28 18:18
dos时代菜鸟 发表于 2021-3-28 15:21:29
如果先判断下系统是否已经装有这个驱动,如果有,就不再安装了, 就不会有需要重启的情况了,

点评

现在就是判断系统里面是否已经安装了svbus驱动,在再做相应处理。 红毛的pecmd和我写的批处理脚本都是这样做的。  详情 回复 发表于 2021-3-28 18:14
liuzhaoyzz 发表于 2021-3-28 11:17:24
freesoft00 发表于 2021-3-28 11:14
既然这样,那不如直接用ahk从写 红毛的脚本,反正都是调用devcon安装,ahk还可以模拟点击

au3/ahk都可以实现模拟按键。批处理其他的一些功能需要调用pecmd,5大已经写好的有现成的,所以想直接用pecmd来搞定。

点评

PECMD是可以,找出那个窗口,发送个按键,是可以做到的。  详情 回复 发表于 2021-3-28 15:22
freesoft00 发表于 2021-3-28 11:14:07
liuzhaoyzz 发表于 2021-3-28 10:03
第一次安装,驱动是直接生效的,不需要重启。
我说的需要重启的情况,指的是,卸载已经安装好的svbus驱 ...

既然这样,那不如直接用ahk从写 红毛的脚本,反正都是调用devcon安装,ahk还可以模拟点击

点评

au3/ahk都可以实现模拟按键。批处理其他的一些功能需要调用pecmd,5大已经写好的有现成的,所以想直接用pecmd来搞定。  详情 回复 发表于 2021-3-28 11:17
dos时代菜鸟 发表于 2021-3-28 09:33:06
liuzhaoyzz 发表于 2021-3-28 08:26
红毛写了个pecmd脚本:test.wcs
ENVI &NeedInstall=No
IFEX #%&bx64%=0,

看来还是要重新启动。

如果是 win7 下 情况可能更复杂。

点评

第一次安装,驱动是直接生效的,不需要重启。 我说的需要重启的情况,指的是,卸载已经安装好的svbus驱动之后,再次安装,svbus驱动无法正常生效,必须重启。  详情 回复 发表于 2021-3-28 10:03
liuzhaoyzz 发表于 2021-3-28 08:26:15
本帖最后由 liuzhaoyzz 于 2021-3-28 09:13 编辑

红毛写了个pecmd脚本:test.wcs
ENVI &NeedInstall=No
IFEX #%&bx64%=0,
{*
    ENVI &devconexe=%&CurDir%\devcon.exe
    ENVI &svbusid="ROOT\svbusx86"
}!  
{*
    ENVI &devconexe=%&CurDir%\devcon64.exe
    ENVI &svbusid="ROOT\svbusx64"
}
DEVI *status:&Status:+:%&svbusid%
FIND $%&Status%=,
{*
    ENVI &NeedInstall=Yes
}
FIND $%&NeedInstall%=Yes,
{*
    EXEC -wait -hide "%&devconexe%" install "%&Curdir%\svbus.inf" %&svbusid%
}


用最新版pecmd搭配devcon也可以安装svbus,pecmd load test.wcs。


存在的问题一样,svbus驱动安装好之后,不能卸载,卸载之后就不能安装了。删除驱动之后再次安装就会导致前面18楼的帖子一样的结果(有截图):
由于 Windows 无法加载这个设备所需的驱动程序,导致这个设备工作异常。 (代码 31)
对象名已存在。


哦,重启了下电脑,好像就好了!驱动正常了。





点评

看来还是要重新启动。 如果是 win7 下 情况可能更复杂。  详情 回复 发表于 2021-3-28 09:33
liuzhaoyzz 发表于 2021-3-27 14:59:02
红毛樱木 发表于 2021-3-27 14:06
搭好环境,加我QQ   252184824
远程看下

已添加。
红毛樱木 发表于 2021-3-27 14:06:15
liuzhaoyzz 发表于 2021-3-27 13:03
勾上显示隐藏设备也是一样的。应该是pecmd安装驱动没有成功。

我看了下pecmd的DEVI命令帮助:

搭好环境,加我QQ   252184824
远程看下

点评

已添加。  详情 回复 发表于 2021-3-27 14:59
liuzhaoyzz 发表于 2021-3-27 13:03:33
本帖最后由 liuzhaoyzz 于 2021-3-27 13:07 编辑
dos时代菜鸟 发表于 2021-3-27 12:27
设备管理器器 选择显示隐藏设备。看看

勾上显示隐藏设备也是一样的。应该是pecmd安装驱动没有成功。

我看了下pecmd的DEVI命令帮助:
    │命令│'DEVI'                                                                                      ┃
┃    ├──┼──────────────────────────────────────────────┨
┃    │格式│DEVI [*rescan] [*norescan] [*devclass:DevClass] [$]<CAB路径>[,匹配级别[,解压目录]]          ┃
┃    │    │DEVI [*rescan] [*norescan] [*nocheck]   <INF路径>[,DevClass]                                ┃
┃    │    │DEVI [*rescan] [*norescan] <含有INF子目录的目录>[,DevClass]                                 ┃
┃    │    │DEVI [*rescan] [*norescan] <*sub|*self> <含有INF文件的目录>[,DevClass]                      ┃
┃    │    │DEVI $[$]<INF路径>,[安装节],[操作码]            <===◆标准安装模式, 默认DefaultInstall,132  ┃
┃    │    │DEVI [*rescan] [*norescan] *extract <CAB路径>,[匹配级别],解压目录             <===纯解压    ┃
┃    │    │DEVI [*rescan] [*norescan] *nocheck <CAB路径>,[匹配级别],解压目录,INF相对路径 <直接安包内INF┃
┃    │    │DEVI *rescan[:Fun]                                                     <===重新扫描硬件改动 ┃
┃    │    │DEVI listdev:变量名  [*devclass:DevClass] [*ALL] [*listdev=i|c|+] [*devid:[h|c|+|@:]ID]     ┃
┃    │    │          [*comp[+]] [*hwid] [*inst] [*many] [*rescan] //查询 可'preID1''preID2'...         ┃
┃    │    │DEVI *disverify  <===关闭驱动校验 **为强制         DEVI *autodisverify <==驱动判断模式   ┃
┃    │    │DEVI <*enable|*disable|*remove|*restart>:[h|c|+:]设备实例路径/(hc)ID  <===启用/禁用/删..设备┃
┃    │    │DEVI *update:硬件ID:INF   <===更新设备   可'硬件ID1:INF1''硬件ID2:INF2'... 上同             ┃
┃    │    │DEVI *status:返回名:[h|c|+:]设备实例路径/(hc)ID [*nl]   <===查询   可'ID1''ID2'...          ┃
┃    │    │ status:0x400=有问题 0x8000=权限 0x8=运行      PROBLEM:0x16=禁止                            ┃
┃    │    │DEVI buildcache: 驱动目录  //生成目录的加速缓冲                                             ┃
┃    ├──┼──────────────────────────────────────────────┨
┃    │功能│从 CAB 文件或INF文件或指定的文件夹中查找(并安装)驱动程序。                                  ┃
┃    ├──┼──────────────────────────────────────────────┨
┃    │    │※*dummy 则不实际安装。用于调试,如查看 DevClass。*devid:设备ID 则安装指定设备驱动。        ┃
┃    │    │  *nnverify 则不禁止驱动签名校验;*rverify之后恢复禁止驱动签名校验设置。 *7pe[-]则强制使用  ┃
┃    │    │  Drvload。*inner则强制不使用Drvload。*drvload/*devcon优先用drvload(默认)/devcon。          ┃
┃    │    │  *retid:变量名 返回本次安装驱动的设备的ID。*auto自动转换是否“处理INF”(CAB默认。注意会改写┃
┃    │    │  INF) *sys:拷贝到系统目录 *cab强制为CAB文件  *comp+:也匹配兼容ID   *ret:返回名:返回报告  ┃
┃    │    │  *IdCah:PeVar:可续用ID缓冲  *infcache:加速缓冲文件                                        ┃
┃    │参数│■指定CAB文件路径。CAB前导"$"表示解压缩驱动文件后安装驱动,否则不安装驱动;可内置           ┃
┃    │    │■INF前导"$"表示执行拷贝的标准模式;否则只加载设备驱动(可能因找不到设备而不加载);        ┃
┃    │    │■*nocheck:不检查硬件ID强制安装;*norescan:禁止重新扫描硬件改动。                         ┃
┃    │    │■*rescan[:Fun]:重新扫描硬件改动(NT6非强制安装时默认),可单用;Fun:0~7。*rescan:3或2       ┃
┃    │    │■匹配级别:设备ID的以&分隔的节数,默认2。                                                  ┃
┃    │    │■查询:默认为设备ID,*listdev=c则为兼容ID,*listdev=i则为唯一ID。*ALL则包含不存在设备      ┃
┃    ├──┼──────────────────────────────────────────────┨
┃    │示例│DEVI *retid:&&IDS $%SystemRoot%\DRV.CAB  或 DEVI MyInf*.INF 或 DEVI %SystemRoot%\Inf\*.INF  ┃
┃    │    │DEVI %SystemRoot%                                                                           ┃
┃    │    │DEVI *extract myCab.CAB,,D:\ABC                                                             ┃
┃    │    │DEVI *dummy *sub  D:\ABC                  //打印D:\ABC下所有INF的DevClass到LOGS。           ┃
┃    │    │DEVI *sub  D:\ABC,Net                     //D:\ABC下寻找并安装网络驱动。                    ┃
┃    │    │DEVI *devclass:Net  $D:\DRV.CAB,,%TEMP%   //D:\DRV.CAB中寻找并安装网络驱动。                ┃
┃    │    │DEVI *devid:PCI\VEN_8086&DEV_1229 $D:\DRV.CAB,,%TEMP%                      //网卡Intel8255x ┃
┃    │    │DEVI *disable:PCI\VEN_14E4&DEV_16B5&SUBSYS_05001025&REV_10\4&14C08592&0&00E3  //禁用网卡BCM ┃
┃    │    │DEVI $$D:\MyDrvs\Drv1.inf                 //◆标准安装模式, 默认DefaultInstall,132          ┃
┃    ├──┼──────────────────────────────────────────────┨
┃DEVI│备注│※此命令使用自定的(而非系统的)驱动搜索算法,可快速解压缩可能用到的驱动程序,因此,一个设备可┃
┃    │    │  能搜索到多个驱动程序。                                                                    ┃
┃    │    │※在CAB中,把每个驱动单独放在一个目录中,并保证CAB中INF文件总是在当前目录的最前面,且CAB中的┃
┃    │    │  INF文件必须经过处理。建议使用配套程序XCAB来制作。                                         ┃
┃    │    │※驱动文件是CAB时,NT5.x系统中,前导'$'和[释放目录]不能同时设置(除非按NT6模式或*sys),但可同┃
┃    │    │  时省略。省略前导'$'时只解压文件;省略[释放目录]时,将进行驱动匹配解压,INF文件            ┃
┃    │    │  被解压到 "%WinDir%\INF" 目录,SYS文件解压到 "%WinDir%\SYSTEM32\DRIVERS" 目录,其它文件解压┃
┃    │    │  到" %WinDir%\SYSTEM32" 目录。                                                             ┃
┃    │    │※驱动文件是CAB时,NT6.x系统中,(*sys同此)有前导'$',[释放目录]为空或*,则为%TEMP%下的一个临┃
┃    │    │  时目录,安装后自动删除。有释放目录'$'可省。将CAB压缩文件按目录结构解压到指定目录中,当有前┃
┃    │    │  导'$'时表示解压后安装目标目录的驱动文件。如果不安装,需要指定*extract。                   ┃
┃    │    │※如果其它文件需要解压缩到特定目录中,可以在文件名中使用"#"代替目录分隔符,如文件           ┃
┃    │    │  "SYSTEM32#WBEM#MOF#XXX.MOF"将会被解压缩到"%SystemRoot%\SYSTEM32\WBEM\MOF\XXX.MOF"。       ┃
┃    │    │※NT6.x系列WinPE中,用DEVI命令安装"%WinDir%\INF"的INF文件将不进行硬件ID匹配检查(直接安装)。 ┃
┃    │    │※此命令还有一个功能:从本地磁盘中搜索驱动,如"DEVI \Windows,Display"。但此命令未完善,会提 ┃
┃    │    │  示驱动文件对话框。因此,本功能暂不提供技术支持。                                          ┃
┃    │    │  *self表示搜索其下*.inf;*sub还要搜索子目录;*self*sub都没则搜索其下INF\*.inf              ┃
┃    │    │※DevClass: Battery CDROM Computer DiskDrive Display FloppyDisk HIDClass Image Infrared     ┃
┃    │    │  Keyboard MEDIA Media Monitor Mouse Net PCMCIA Ports Processor SCSIAdapter System USB      ┃
┃    │    │  Volume fdc hdc                                                                            ┃
┃    │    │※%&__DEVI.REBOOT%: 是否需要重启   ID中*字符用^*(或*)替代                                   ┃

@echo off
if /i %PROCESSOR_IDENTIFIER:~0,3%==x86 (
set "devcon=devcon.exe"
set "svbus=svbusx86"
set "PECMD=PECMDx86_cli.exe"
) else (
set "devcon=devcon64.exe"
set "svbus=svbusx64"
set "PECMD=PECMDx64_cli.exe"
)
reg import EVRootCA.reg
rem sc delete "%svbus%"
rem PECMDx64_cli DEVI *self *sub *nocheck *rverify *sys *ret $$.\SVBus-朱玛\svbus.inf
rem PECMDx64_cli DEVI $$.\SVBus-朱玛\svbus.inf
rem PECMDx64_cli DEVI .\svbus.inf
PECMDx64_cli DEVI *remove *devcon *devid:root\%svbus%
PECMDx64_cli DEVI *nocheck **disverify *sys *ret *inner *devcon *devid:root\%svbus% svbus.inf
pause

尝试了很多个参数都不行,不会用。我都不会用pecmd,也没法跟mdyblog大神反馈。。。

点评

搭好环境,加我QQ 252184824 远程看下  详情 回复 发表于 2021-3-27 14:06
dos时代菜鸟 发表于 2021-3-27 12:27:05
liuzhaoyzz 发表于 2021-3-27 12:08
有没有可能pecmd已经有解决办法了,只是因为参数太多,我不会用?

我尝试用devcon,可以成功。

设备管理器器 选择显示隐藏设备。看看

点评

勾上显示隐藏设备也是一样的。应该是pecmd安装驱动没有成功。 我看了下pecmd的DEVI命令帮助: │命令│'DEVI' ┃  详情 回复 发表于 2021-3-27 13:03
dos时代菜鸟 发表于 2021-3-27 12:00:23
527104427 发表于 2021-3-27 10:51
楼主的意思是添加一个不存在的设备。
而你说的这些都是给已存在的设备添加驱动。
不是一个意思。

哦,那,看来又要通过 api 了
窄口牛 发表于 2021-3-27 10:54:17
微软搞了wtg,也想像Linux那样富驱动,所以现在系统体积最大的累赘就是驱动,不信你看看刚装完和打了驱动以后的体积比较一下。
dos时代菜鸟 发表于 2021-3-27 10:05:54
本帖最后由 dos时代菜鸟 于 2021-3-27 10:10 编辑
liuzhaoyzz 发表于 2021-3-27 08:22
svbus直接从设备管理器里面添加过时驱动,不需要重启就可以啊。

也可以尝试下,用PNPUTIL /DRVLOAD 啥的再次通过已经添加成 OEM. inf 的驱动文件来安装下。或许能行。
你看下注册表指定位置是否有驱动对应的service,如果没有,那就要重启才会出来,或许用DEVCON 的RESCAN能行。

点评

楼主的意思是添加一个不存在的设备。 而你说的这些都是给已存在的设备添加驱动。 不是一个意思。  详情 回复 发表于 2021-3-27 10:51
liuzhaoyzz 发表于 2021-3-27 08:22:23
dos时代菜鸟 发表于 2021-3-27 08:12
可能需要重启,或者,已经挂载了虚拟盘

svbus直接从设备管理器里面添加过时驱动,不需要重启就可以啊。

点评

也可以尝试下,用PNPUTIL /DRVLOAD 啥的再次通过已经添加成 OEM. inf 的驱动文件来安装下。或许能行。  详情 回复 发表于 2021-3-27 10:05
可以去请教m大,为增强pecmd出一份力  详情 回复 发表于 2021-3-27 10:05
dos时代菜鸟 发表于 2021-3-27 08:12:45
liuzhaoyzz 发表于 2021-3-27 08:07
@echo off
reg import EVRootCA.reg
pnputil /add-driver svbus.inf

可能需要重启,或者,已经挂载了虚拟盘

点评

svbus直接从设备管理器里面添加过时驱动,不需要重启就可以啊。  详情 回复 发表于 2021-3-27 08:22

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-29 03:33

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表