无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站数据恢复、数据保护、视频编辑
Win To Go 极致利器(IXUNCIS固态U盘)无忧启动网成立20周年!广告联系 QQ:184822951 微信:wuyouceo
查看: 2145|回复: 38
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2021-3-25 22:53:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 liuzhaoyzz 于 2021-3-25 22:54 编辑


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

比如说我想安装svbus驱动,怎么用pecmd/dpinst/drvload/devcon/PnPUtil实现?
试了下没有成功。
@echo off
rem PECMDx64_cli DEVI *self *sub *nocheck *rverify *sys *ret $$.\SVBus-朱玛\svbus.inf
rem PECMDx64_cli DEVI $$.\SVBus-朱玛\svbus.inf
PECMDx64_cli DEVI .\SVBus-朱玛\svbus.inf
pause

        



SVBus-安装测试.rar

2.17 MB, 下载次数: 27, 下载积分: 无忧币 -2

2#
发表于 2021-3-25 22:59:07 | 只看该作者
太高级,看不懂...
回复

使用道具 举报

3#
发表于 2021-3-25 23:00:51 | 只看该作者
新版pecdm,请直接找M大问下,可以比较靠谱。

点评

我尝试的就是m大的新版pecmd,试了下没有成功。  详情 回复 发表于 2021-3-26 06:58
回复

使用道具 举报

4#
发表于 2021-3-26 06:14:38 来自手机 | 只看该作者
dism 导入

点评

我晚点试试看,谢谢提醒。  详情 回复 发表于 2021-3-26 07:14
回复

使用道具 举报

5#
 楼主| 发表于 2021-3-26 06:58:54 来自手机 | 只看该作者
zds1210 发表于 2021-3-25 23:00
新版pecdm,请直接找M大问下,可以比较靠谱。

我尝试的就是m大的新版pecmd,试了下没有成功。
回复

使用道具 举报

6#
 楼主| 发表于 2021-3-26 07:14:42 来自手机 | 只看该作者
dos时代菜鸟 发表于 2021-3-26 06:14
dism 导入

我晚点试试看,谢谢提醒。

点评

dism 不支持 online方式安装 添加驱动。需要离线。  详情 回复 发表于 2021-3-26 10:25
回复

使用道具 举报

7#
发表于 2021-3-26 10:25:43 | 只看该作者
本帖最后由 dos时代菜鸟 于 2021-3-26 10:29 编辑
liuzhaoyzz 发表于 2021-3-26 07:14
我晚点试试看,谢谢提醒。

dism 不支持 online方式安装 添加驱动。需要离线。

pe下用  drvload 是可以的,但是 drvload 不只一个文件,还需要配套的 dll ,到底都有哪些 dll 就不清楚了。

点评

我想在线安装,看来dism不能满足我的需求。 感觉drvload不如dpinst可靠。  详情 回复 发表于 2021-3-26 10:51
回复

使用道具 举报

8#
 楼主| 发表于 2021-3-26 10:51:38 来自手机 | 只看该作者
dos时代菜鸟 发表于 2021-3-26 10:25
dism 不支持 online方式安装 添加驱动。需要离线。

pe下用  drvload 是可以的,但是 drvload 不只一个 ...

我想在线安装,看来dism不能满足我的需求。

感觉drvload不如dpinst可靠。
回复

使用道具 举报

9#
发表于 2021-3-26 18:04:02 来自手机 | 只看该作者
本帖最后由 dos时代菜鸟 于 2021-3-26 20:34 编辑

pnputil 试试




这个是从你那里弄到的 注册表文件,先运行这个, EVRootCA.7z (2.45 KB, 下载次数: 9)
再 安装 inf 就可以安装上。

点评

@echo off reg import EVRootCA.reg pnputil /add-driver svbus.inf pause 我试了下,不行。 操作成功完成。 Microsoft PnP 工具 正在添加驱动程序包: svbus.inf 已成功添加驱动程序程序包。 发布名称  详情 回复 发表于 2021-3-27 08:07
回复

使用道具 举报

10#
 楼主| 发表于 2021-3-27 08:07:03 | 只看该作者

@echo off
reg import EVRootCA.reg
pnputil /add-driver svbus.inf
pause

我试了下,不行。
操作成功完成。
Microsoft PnP 工具

正在添加驱动程序包:  svbus.inf
已成功添加驱动程序程序包。
发布名称:         oem14.inf

驱动程序包总数:  1
已添加驱动程序包数:  1
请按任意键继续. . .

显示添加驱动程序成功,但实际上并没有成功。设备管理器里面没有svbus驱动。

QQ拼音截图20210327080446.png (34.33 KB, 下载次数: 10)

QQ拼音截图20210327080446.png

点评

可能需要重启,或者,已经挂载了虚拟盘  详情 回复 发表于 2021-3-27 08:12
回复

使用道具 举报

11#
发表于 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
回复

使用道具 举报

12#
 楼主| 发表于 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
回复

使用道具 举报

13#
发表于 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
回复

使用道具 举报

14#
发表于 2021-3-27 10:54:17 来自手机 | 只看该作者
微软搞了wtg,也想像Linux那样富驱动,所以现在系统体积最大的累赘就是驱动,不信你看看刚装完和打了驱动以后的体积比较一下。
回复

使用道具 举报

15#
发表于 2021-3-27 12:00:23 | 只看该作者
527104427 发表于 2021-3-27 10:51
楼主的意思是添加一个不存在的设备。
而你说的这些都是给已存在的设备添加驱动。
不是一个意思。

哦,那,看来又要通过 api 了
回复

使用道具 举报

16#
 楼主| 发表于 2021-3-27 12:08:00 | 只看该作者
本帖最后由 liuzhaoyzz 于 2021-3-29 07:45 编辑
527104427 发表于 2021-3-27 10:05
可以去请教m大,为增强pecmd出一份力

有没有可能pecmd已经有解决办法了,只是因为参数太多,我不会用?

我尝试用devcon,可以成功。
@echo off
setlocal EnableDelayedExpansion
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
%devcon% status "root\%svbus%"|find /i "No matching devices found" 1>nul 2>nul && (
echo Install svbus driver...
%devcon% install svbus.inf "root\%svbus%"
echo Svbus driver has been installed.
)
%devcon% status "root\%svbus%"|find /i "The device has the following problem" 1>nul 2>nul && (
set /p confirm=警告:你的电脑需要重启下以确保svbus驱动生效!现在重启?(Y=是,回车或者N=不是):
if not defined confirm set confirm=N
if /i "!confirm!"=="Y" shutdown.exe /r /f /t 5 /c "重启电脑,以确保svbus驱动生效..."
)
pause

但是再次用devcon可能会导致一些问题,第二次用的话可能需要先删除驱动,但是删除驱动之后再次安装就会导致:
由于 Windows 无法加载这个设备所需的驱动程序,导致这个设备工作异常。 (代码 31)
对象名已存在。





这个“对象名已存在”,不知道指的是什么?我尝试sc delete "svbusx64"服务也没用。sc delete "svbusx64"会删除下面的svbus注册表服务:Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\svbusx64]
"Type"=dword:00000001
"Start"=dword:00000000
"ErrorControl"=dword:00000001
"Tag"=dword:00000022
"ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,64,00,\
  72,00,69,00,76,00,65,00,72,00,73,00,5c,00,73,00,76,00,62,00,75,00,73,00,78,\
  00,36,00,34,00,2e,00,73,00,79,00,73,00,00,00
"Group"="SCSI Miniport"
"Owners"=hex(7):6f,00,65,00,6d,00,31,00,34,00,2e,00,69,00,6e,00,66,00,00,00,00,\
  00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\svbusx64\Enum]
"0"="ROOT\\SCSIADAPTER\\0000"
"Count"=dword:00000001
"NextInstance"=dword:00000001


%devcon% remove root\%svbus%执行之后,已经删除了注册表[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e97b-e325-11ce-bfc1-08002be10318}\0003]的这个主键,这是svbus驱动安装时创建的主键,怎么还会提示这个“对象名已存在”?搞不懂。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e97b-e325-11ce-bfc1-08002be10318}\0003]
"DriverDesc"="SVBus Virtual SCSI Host Adapter"
"ProviderName"="Kai Schtrom"
"DriverDateData"=hex:00,80,c3,f5,ef,1c,d6,01
"DriverDate"="4-28-2020"
"DriverVersion"="1.2.0.0"
"InfPath"="oem14.inf"
"InfSection"="svbusx64"
"MatchingDeviceId"="root\\svbusx64"

windows事件查看器错误日志:设备 ROOT\SCSIADAPTER\0000 在启动时出现问题。

驱动程序名称: oem14.inf
类 GUID: {4d36e97b-e325-11ce-bfc1-08002be10318}
服务: svbusx64
低层筛选程序:
高层筛选程序:
问题: 0x1F









SVBus-安装测试.rar

84.8 KB, 下载次数: 7, 下载积分: 无忧币 -2

点评

设备管理器器 选择显示隐藏设备。看看  详情 回复 发表于 2021-3-27 12:27
pecmd已经集成devcon的功能了,但具体有没有install参数,我也没试出来,估计是没有。可以请求m大增强  详情 回复 发表于 2021-3-27 12:18
回复

使用道具 举报

17#
发表于 2021-3-27 12:27:05 | 只看该作者
liuzhaoyzz 发表于 2021-3-27 12:08
有没有可能pecmd已经有解决办法了,只是因为参数太多,我不会用?

我尝试用devcon,可以成功。

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

点评

勾上显示隐藏设备也是一样的。应该是pecmd安装驱动没有成功。 我看了下pecmd的DEVI命令帮助: │命令│'DEVI' ┃  详情 回复 发表于 2021-3-27 13:03
回复

使用道具 举报

18#
 楼主| 发表于 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
回复

使用道具 举报

19#
发表于 2021-3-27 14:06:15 | 只看该作者
liuzhaoyzz 发表于 2021-3-27 13:03
勾上显示隐藏设备也是一样的。应该是pecmd安装驱动没有成功。

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

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

点评

已添加。  详情 回复 发表于 2021-3-27 14:59
回复

使用道具 举报

20#
 楼主| 发表于 2021-3-27 14:59:02 | 只看该作者
红毛樱木 发表于 2021-3-27 14:06
搭好环境,加我QQ   252184824
远程看下

已添加。
回复

使用道具 举报

21#
 楼主| 发表于 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
回复

使用道具 举报

22#
发表于 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
回复

使用道具 举报

23#
 楼主| 发表于 2021-3-28 10:03:06 | 只看该作者
本帖最后由 liuzhaoyzz 于 2021-3-28 10:56 编辑
dos时代菜鸟 发表于 2021-3-28 09:33
看来还是要重新启动。

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

第一次安装,驱动是直接生效的,不需要重启。
我说的需要重启的情况,指的是,卸载已经安装好的svbus驱动之后,再次安装,svbus驱动无法正常生效,必须重启。

另外想问下各位大神,pecmd能否实现简单的模拟按键,比如第一次安装svbus驱动的时候,windows会弹出对话框,“你想安装这个设备软件吗?”,这个对话框能否用pecmd调用windowsapi的postmessage或者KeyboardEvent之类的搞定?需要先找到这个窗口的句柄,然后setforground,然后勾选复选框,alt+I搞定。

实现应该可以实现,但是好像没有太大的用处。。。因为批处理安装过程中弹出的对话框,pecmd需要提前作为守护进程监视对话框。

你想安装这个设备软件吗?.png (12.5 KB, 下载次数: 8)

你想安装这个设备软件吗?.png

点评

既然这样,那不如直接用ahk从写 红毛的脚本,反正都是调用devcon安装,ahk还可以模拟点击  详情 回复 发表于 2021-3-28 11:14
回复

使用道具 举报

24#
发表于 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
回复

使用道具 举报

25#
 楼主| 发表于 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
回复

使用道具 举报

26#
发表于 2021-3-28 15:21:29 来自手机 | 只看该作者
如果先判断下系统是否已经装有这个驱动,如果有,就不再安装了, 就不会有需要重启的情况了,

点评

现在就是判断系统里面是否已经安装了svbus驱动,在再做相应处理。 红毛的pecmd和我写的批处理脚本都是这样做的。  详情 回复 发表于 2021-3-28 18:14
回复

使用道具 举报

27#
发表于 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
回复

使用道具 举报

28#
 楼主| 发表于 2021-3-28 18:14:22 来自手机 | 只看该作者
dos时代菜鸟 发表于 2021-3-28 15:21
如果先判断下系统是否已经装有这个驱动,如果有,就不再安装了, 就不会有需要重启的情况了,

现在就是判断系统里面是否已经安装了svbus驱动,在再做相应处理。
红毛的pecmd和我写的批处理脚本都是这样做的。
回复

使用道具 举报

29#
 楼主| 发表于 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
回复

使用道具 举报

30#
发表于 2021-3-28 19:50:09 | 只看该作者
liuzhaoyzz 发表于 2021-3-28 18:18
有点小问题,批处理是流程化执行的,pecmd必须作为一个守护进程提前打开,然后批处理调用devcon64执行安 ...

pecmd 可以用多线程监视 ,查看窗口出现了,再传递按键。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2021-4-22 10:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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