首页 > 其他分享 >PnPUtil 和 DevCon 区别

PnPUtil 和 DevCon 区别

时间:2023-10-22 19:15:04浏览次数:27  
标签:DevCon 驱动程序 区别 PnPUtil enum pnputil device 设备

PnPUtil 和 DevCon 都是微软提供的用于管理设备和驱动程序的命令行工具。它们在某些方面有所不同,而微软更倾向于推荐使用 PnPUtil 的原因主要包括以下几点:

内置支持:PnPUtil 是 Windows 操作系统的一部分,因此可以在所有支持的 Windows 版本上直接使用,而 DevCon 需要单独下载并安装。

数字签名支持:PnPUtil 具有对数字签名的良好支持。它能够验证设备驱动程序的数字签名,并帮助用户确保驱动程序的真实性和完整性。

适用性广泛:PnPUtil 可以用于管理各种类型的设备,包括网络、存储、打印和其他硬件设备。它可以添加、删除和禁用设备驱动程序。

简化的语法:相对于 DevCon,PnPUtil 的命令语法更加简单易懂,更符合一般用户的使用习惯。

总的来说,微软推荐使用 PnPUtil 是因为它作为内置工具具有更广泛的适用性和更好的兼容性,并且支持数字签名验证,使设备和驱动程序的管理更加方便和安全。

PnPUtil 和 DevCon 都是微软提供的用于管理设备和驱动程序的命令行工具,它们之间的主要区别在以下几个方面:

功能:PnPUtil 主要用于添加、删除和禁用设备驱动程序,而 DevCon 更多用于查询和控制设备状态和属性,例如列出可用设备、启用或禁用特定设备、重新启动设备等。

命令语法:PnPUtil 的命令语法相对简单易懂,而 DevCon 则需要更复杂的命令语法。

数字签名验证:PnPUtil 具有对数字签名的良好支持。它能够验证设备驱动程序的数字签名,并帮助用户确保驱动程序的真实性和完整性。而 DevCon 不支持数字签名验证。

内置支持:PnPUtil 是 Windows 操作系统的一部分,因此可以在所有支持的 Windows 版本上直接使用,而 DevCon 需要单独下载并安装。

适用范围:PnPUtil 可以用于管理各种类型的设备,例如网络、存储、打印等设备,而 DevCon 主要是用于管理硬件设备。

总的来说,PnPUtil 和 DevCon 都是用于管理设备和驱动程序的工具,但它们的功能、语法和适用范围各有所不同。用户可以根据自己的需求选择其中之一来管理设备和驱动程序。

除了 PnPUtil 和 DevCon,还有一些其他工具可用于设备和驱动程序的管理。以下是其中一些常见的工具:

Device Manager(设备管理器):这是 Windows 操作系统中内置的图形界面工具,用于查看和管理计算机上安装的硬件设备和驱动程序。可以通过设备管理器来添加、删除、禁用、启用设备,更新驱动程序等操作。

Windows PowerShell:PowerShell 是一种强大的命令行脚本环境,可用于管理各个方面的 Windows 操作系统。它提供了许多与设备和驱动程序相关的命令和模块,可以进行设备的查询、控制和配置。

WMIC(Windows Management Instrumentation Command-line):WMIC 是 Windows 上的命令行实用程序,用于管理操作系统和硬件设备。可以使用 WMIC 查询和控制设备驱动程序,例如启动、停止、卸载等操作。

Driver Verifier Manager(驱动程序验证管理器):这是一个 Windows 工具,用于验证和检测设备驱动程序的问题。它可以帮助识别和解决驱动程序引起的系统稳定性和性能问题。

这些工具在不同的场景中有不同的用途和优势,用户可以根据实际需求选择合适的工具来管理设备和驱动程序。

pnputil /?
Microsoft PnP 工具

PNPUTIL [/add-driver <...> | /delete-driver <...> |
/export-driver <...> | /enum-drivers |
/enum-devices [<...>] | /enum-interfaces [<...>] |
/disable-device <...> | /enable-device <...> |
/restart-device <...> | /remove-device <...> |
/scan-devices [<...>] | /?]

命令:

/add-driver <filename.inf | *.inf> [/subdirs] [/install] [/reboot]

将驱动程序包添加到驱动程序存储中。
  /subdirs - 遍历驱动程序包的子目录。
  /install - 在任何匹配的设备上安装/更新驱动程序。
  /reboot - 根据需要重新启动系统以完成此操作。

示例:
  添加驱动程序包:
    pnputil /add-driver x:\driver.inf
  添加多个驱动程序包:
    pnputil /add-driver c:\oem\*.inf
  添加和安装驱动程序包:
    pnputil /add-driver device.inf /install

/delete-driver <oem#.inf> [/uninstall] [/force] [/reboot]

从驱动程序存储中删除驱动程序包。
  /uninstall - 从任何使用驱动程序包的设备中卸载驱动程序包。
  /force - 删除驱动程序包,即使有设备正在使用它。
  /reboot - 根据需要重新启动系统以完成此操作。

示例:
  删除驱动程序包:
    pnputil /delete-driver oem0.inf
  强制删除驱动程序包:
    pnputil /delete-driver oem1.inf /force

/export-driver <oem#.inf | *> <目标目录>

从驱动程序存储中将驱动程序包导出到目标目录中。

示例:
  导出驱动程序包:
    pnputil /export-driver oem6.inf .
  导出所有驱动程序包:
    pnputil /export-driver * c:\backup

/enum-drivers

枚举驱动程序存储中的所有第三方驱动程序包。

示例:
  枚举所有 OEM 驱动程序包:
    pnputil /enum-drivers

/disable-device | /deviceid [/reboot]

禁用系统上的设备。
  /deviceid <device ID> - 禁用带匹配设备 ID 的所有设备。
  /reboot - 根据需要重新启动系统以完成此操作。
示例:
  禁用设备:
    pnputil /disable-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
  禁用具有特定硬件/兼容 ID 的所有设备:
    pnputil /disable-device /deviceid "USB\Class_03"

/enable-device | /deviceid [/reboot]

启用系统上的设备。
  /deviceid <device ID> - 启用带匹配设备 ID 的所有设备。
  /reboot - 根据需要重新启动系统以完成此操作。
示例:
  启用设备:
    pnputil /enable-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
  启用具有特定硬件/兼容 ID 的所有设备:
    pnputil /enable-device /deviceid "USB\Class_03"

/restart-device | /deviceid [/reboot]

重启系统上的设备。
  /deviceid <device ID> - 重启带匹配设备 ID 的所有设备。
  /reboot - 根据需要重新启动系统以完成此操作。
示例:
  重启设备:
    pnputil /restart-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
  重新启动具有特定硬件/兼容 ID 的所有设备:
    pnputil /restart-device /deviceid "USB\Class_03"

/remove-device | /deviceid [/subtree] [/reboot]

尝试从系统中删除设备。
  /deviceid <device ID> - 删除带匹配设备 ID 的所有设备。
  /subtree - 删除整个设备子树,包括任何子设备。
  /reboot - 根据需要重新启动系统以完成此操作。
示例:
  删除设备:
    pnputil /remove-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
  删除具有特定硬件/兼容 ID 的所有设备:
    pnputil /remove-device /deviceid "USB\Class_03"

/scan-devices [/instanceid <实例 ID>] [/async]

扫描系统以查找任何设备硬件更改。
  /instanceid <实例 ID> - 在设备子树中扫描更改。
  /async - 异步扫描更改。

示例:
  扫描设备:
    pnputil /scan-devices

/enum-devices [/connected | /disconnected] [/instanceid <实例 ID>]
[/class <name | GUID>] [/problem []] [/deviceids]
[/relations] [/drivers]

枚举系统上的所有设备。
  /connected | /disconnected - 按连接的设备筛选或
                               按断开连接的设备筛选。
  /instanceid <实例 ID> - 按设备实例 ID 筛选。
  /class <名称 | GUID> - 按设备类名称或 GUID 筛选。
  /problem [<代码>] - 按出现问题的设备筛选或
                      按特定问题代码筛选。
  /bus [<name | GUID>]-显示总线枚举器名称和总线类型 GUID 或
                         按总线枚举器名称或总线类型 GUID 筛选。
  /deviceids-显示硬件/兼容 ID。
  /relations - 显示父级和子级设备关系。
  /drivers - 显示匹配的驱动程序和已安装的驱动程序。
  /stack-显示设备堆栈信息。
  /interfaces - 显示设备接口。
  /properties - 显示所有设备属性。

示例:
  仅枚举系统上已连接的设备:
    pnputil /enum-devices /connected
  枚举具有特定实例 ID 的设备:
    pnputil /enum-devices /instanceid "ACPI\PNP0A08\1"
  枚举具有特定类的所有设备:
    pnputil /enum-devices /class Display
    pnputil /enum-devices /class {4d36e97d-e325-11ce-bfc1-08002be10318}
  枚举具有特定问题代码的所有设备:
    pnputil /enum-devices /problem 28
    pnputil /enum-devices /problem 0xA
  枚举具有特定总线的所有设备:
    pnputil /enum-devices /bus PCI
    pnputil /enum-devices /bus {c8ebdfb0-b510-11d0-80e5-00a0c92542e3}
  枚举具有问题的所有设备并显示硬件/兼容 ID:
    pnputil /enum-devices /problem /deviceids

/enum-interfaces [/enabled | /disabled] [/class ]

枚举系统上的所有设备接口。
  /enabled | /disabled - 按启用的接口筛选或
                         按禁用的接口筛选。
  /class <GUID> - 按接口类 GUID 筛选。

示例:
  仅枚举系统上的已启用接口:
    pnputil /enum-interfaces /enabled
  枚举具有特定接口类 GUID 的所有接口:
    pnputil /enum-interfaces /class {884b96c3-56ef-11d1-bc8c-00a0c91405dd}

/?

显示使用情况屏幕。

Device Console 帮助:
devcon [-r] [-m:<机器>] <命令> [<参数>...]
-r 仅在需要重新启动或重启时才重新启动系统。
指定远程计算机。
指定 Devcon 命令(参见下面的命令列表)。
... 一个或多个修改命令的参数。
要获取特定命令的帮助,请键入:devcon help

classfilter 添加、删除和重新排序类筛选器。

classes 列出所有设备安装类。

disable 禁用设备。

driverfiles 列出设备的已安装驱动程序文件。

drivernodes 列出设备的驱动程序节点。

enable 启用设备。

find 查找设备。

findall 查找设备,包括当前未连接的设备。

help 显示 Devcon 帮助。

hwids 列出设备的硬件 ID。

install 手动安装设备。

listclass 列出设置类中的所有设备。

reboot 重新启动本地计算机。

remove 移除设备。

rescan 扫描新硬件。

resources 列出设备的硬件资源。

restart 重新启动设备。

sethwid 修改列出的根枚举设备的硬件 ID。

stack 列出设备的预期驱动栈。

status 列出设备的运行状态。

update 手动更新设备。

updateni 手动更新设备(非交互式)。

dp_add 添加(安装)第三方(OEM)驱动程序包。

dp_delete 删除第三方(OEM)驱动程序包。

dp_enum 列出安装在此计算机上的第三方(OEM)驱动程序包。

以上是 devcon 命令的列表和说明。您可以根据需要使用适当的命令来管理设备和驱动程序。

标签:DevCon,驱动程序,区别,PnPUtil,enum,pnputil,device,设备
From: https://www.cnblogs.com/suv789/p/17780844.html

相关文章

  • 【C语言】j<=9和j<=n的区别
    一起学习,一起进步@放纵lili以下都是我自己学习过程的领悟:想出讲这一点,是因为我在学习过程中遇到了这个问题,但无处求解,之后自己给领悟了,就想分享出来。为了讲得更清楚一点,我以一个编程“九九乘法表为例”,来讲解其中的j<=9和j<=n的区别,同时也会增强我们对于循环的理解。一、首先先看......
  • 嵌入式刷题(day2 new delete 和malloc free的区别)
    (文章目录)前言本篇文章我们来讲解一下newdelete和mallocfree的区别,这个区别在许多面试题中也会经常问到,那么我们就具体的来看看他们有什么不同吧。一、区别new和delete是C++中的运算符,用于动态分配和释放内存空间,而malloc和free是C语言中的函数,用于同样的目的......
  • centos7和centos8的区别
      网络管理centos7云主机:centos7使用network管理网络,NetworkManager默认是关闭的自己安装的centos7mini版:两个都是开启的 centos8centos8没有network,使用NetworkManager管理网络修改ip地址等操作之后,使用systemctlrestartNetworkManager重启网络服务 yum和dnfcentos......
  • computed和watch之前的区别
    1、computed依赖同步数据的变化,处于生命周期的创建阶段以及更新阶段,一般如果依赖的data不变的话,则通常不会重新计算,所以一般在创建阶段,如果依赖data是变化的,则处于更新阶段,computed的值会默认走缓存,计算属性基于它们的响应式依赖进行缓存,基于data声明过或者父组件传过来的props数......
  • @Resource和@Autowired区别和用处
    @Autowired和@Resource都是用于依赖注入的注解,但是他们来自不同的“父类”,具有不同的基因。具体来说,@Autowired是Spring框架定义的注解,其功能主要通过Spring的IOC和AOP实现。而@Resource则是Java本身定义的注解,来自于JSR-250(Java250规范提案),需要JDK1.6及以上版本。这两种注解在......
  • 一文1000字彻底搞懂Web测试与App测试的区别
    总结分享一些项目需要结合Web测试和App测试的工作经验给大家:从功能测试区分,Web测试与App测试在测试用例设计和测试流程上没什么区别。而两者的主要区别体现在如下几个方面:1系统结构方面Web项目,B/S架构,基于浏览器的;Web测试过程中,客户端会随服务器端同步更新,所以只需更新服务器......
  • 独立站和自建站的区别和优势分析
    在现在这个互联网时代,拥有一个自己的网站已经成为了许多人追逐的梦想。但是,在创建网站时,许多人会犯一个错误,那就是混淆了独立站和自建站的概念。今天,我们就来详细分析一下独立站和自建站的区别和优势。一、独立站和自建站的概念与区别独立站是指完全独立于其他网站的一个站点,它具有......
  • 【大揭秘】美团面试题:ConcurrentHashMap和Hashtable有什么区别?一文解析!
    正文亲爱的小伙伴们,大家好!我是小米,一个热爱技术分享的程序员,今天我为大家带来了一篇有关美团面试题的热门话题:ConcurrentHashMap和Hashtable有什么区别。这个问题在Java面试中常常被拿来考察对多线程编程的理解,所以务必认真学习,不仅仅是为了通过面试,更是为了提高自己在多线程编......
  • PMP开工会议和启动会议的区别
    项目启动会议(ProjectInitiatingMeeting):项目启动阶段结束时进行。项目开工会议(ProjectKick-offMeeting):项目管理计划完成后,项目具体工作实施之前进行。 一般PMP考试都是考开工会议,但是有时题目会把开工会翻译成启动会,所以需要留意英文翻译。 ......
  • 并行和并发的区别(详细)
    并行(Parallelism)和并发(Concurrency)是计算机科学中两个相关但不同的概念,它们都涉及多任务处理,但在执行方式和目标上有重要区别:并行(Parallelism):定义:并行是指同时执行多个任务或操作,它们可以在同一时刻开始和结束。这通常涉及到多个处理单元(如CPU核心)或多台计算机同时执行不同的......