我有一个特定的硬件,我想在每次Windows重启时禁用和重新启用。我创建了一个批处理脚本,应该这样做,然后运行我的程序:
cd %~dp0
devcon.exe disable "PCI\VEN_1002&DEV_687F"
timeout /t 3
devcon.exe enable "PCI\VEN_1002&DEV_687F"
runMyWindows.exe --totally-not-virus
我不确定devcon.exe
是否适合这个应用程序,因为我根本没有编写Windows脚本的经验。
但是,我注意到这些命令并不能完成这项工作,因为我的runMyWindows.exe
程序无法正常工作,直到我转到Windows设备管理器并手动禁用并重新启动启用此设备。
我这个机器上只有一个用户,这是"管理员"除了双击.bat
文件之外,我没有以任何特殊方式运行此脚本,或者在重新启动时,它从启动文件夹(C:\Users\oxxo\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
)运行。
有没有办法在我的批处理脚本中正确执行此操作,该脚本应该在Windows启动时自动运行?
答案 0 :(得分:4)
PnPUtil也可以执行此工作,无需下载SDK或其他任何相关内容。 自Vista开始包含在Windows中:
https://docs.microsoft.com/de-de/windows-hardware/drivers/devtest/pnputil
答案 1 :(得分:2)
由于安全性和改进,在Windows 10
中,当然Windows Vista
以及User Account Control
的引入我假设您需要Run as administrator
,而不仅仅是管理员组的成员。
通常应该理解,Run as administrator
表示Run as the user with the account name Administrator
不是Run as any user who holds membership of the Administrators group
。
要Run as administrator
,请右键单击批处理文件,然后从上下文菜单中选择Run as administrator
。
还有其他以管理员身份运行的方式。
PowerShell
或WSH
辅助函数。Task Scheduler
并选择相应的触发器和帐户信息(可能使用SYSTEM帐户)。此外,您需要确保DevCon.exe
为:
"%~dp0DevCon.exe" Disable "PCI\VEN_1002&DEV_687F*"
DevCon Disable "PCI\VEN_1002&DEV_687F*"
"C:\Tools\DevCon.exe" Disable "PCI\VEN_1002&DEV_687F*"
在上述所有情况下,请注意示例中缺少的星号
答案 2 :(得分:0)
将要阅读此线程的大多数人不会发现其他答案非常有用,因为这主要是关于如何使用管理员权限运行问题中的脚本。我将尝试在这里回答隐性问题:
我发现使用devcon.exe(6mb)最简单,就像在问题中一样:
set HARDWARE_ID="PCI\VEN_8086&DEV_4229&SUBSYS_11018086&REV_61"
devcon disable %HARDWARE_ID%
timeout /t 3
devcon enable %HARDWARE_ID%
devcon.exe
需要管理员权限。
devcon
?它是Windows驱动程序开发工具包的一部分。不幸的是,官方资源要求您下载1gb SDK。通过遵循此处的答案之一,我可以解决此问题:https://superuser.com/questions/1002950/quick-method-to-install-devcon-exe
一旦有了它,请确保devcon.exe
上有%PATH%
。我把我放在C:\Windows\System32\
中。
使用管理员权限打开命令提示符,然后执行devcon hwids *
,这将打印所有设备及其对应的ID。这将产生很多输出。使用命令提示符搜索功能查找所需内容。这是我感兴趣的部分:
PCI\VEN_8086&DEV_4229&SUBSYS_11018086&REV_61\4&6AB551C&0&00E1
Name: Intel(R) Wireless WiFi Link 4965AGN
Hardware IDs:
PCI\VEN_8086&DEV_4229&SUBSYS_11018086&REV_61
PCI\VEN_8086&DEV_4229&SUBSYS_11018086
PCI\VEN_8086&DEV_4229&CC_028000
PCI\VEN_8086&DEV_4229&CC_0280
Compatible IDs:
PCI\VEN_8086&DEV_4229&REV_61
PCI\VEN_8086&DEV_4229
PCI\VEN_8086&CC_028000
PCI\VEN_8086&CC_0280
PCI\VEN_8086
PCI\CC_028000
PCI\CC_0280
选择足够具体的ID,并通过以下操作检查其是否有效:
devcon find "PCI\VEN_8086&DEV_4229&SUBSYS_11018086&REV_61"
如果该设备仅找到1台设备,而这正是您想要的设备,那就太好了。请注意,通常您会想用引号将硬件ID转义。
就我而言,当计算机在关机或睡眠后启动时,我还需要运行此脚本。我授予了上述脚本合理的权限,并使用Task Scheduler以其术语在登录和启动时运行它: https://www.sevenforums.com/tutorials/67503-task-create-run-program-startup-log.html?ltr=T