当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 从 Windows 驱动程序商店中删除旧的和无用的驱动程序

作者:精品下载站 日期:2024-12-14 23:29:24 浏览:13 分类:玩电脑

从 Windows 驱动程序商店中删除旧的和无用的驱动程序


当您在 Windows 中安装或更新设备驱动程序时,旧版本的驱动程序仍保留在系统驱动器上。如果新驱动程序不稳定,这允许用户回滚到以前的驱动程序版本。但是,Windows 不会自动删除旧的无用版本的驱动程序,因此随着时间的推移,驱动程序在系统驱动器上占用的空间量会变得相当大。在本文中,我们将了解使用内置和第三方工具删除 Windows 中过时和旧版本驱动程序(重复项)的几种方法。

Windows 将所有驱动程序文件存储在其驱动程序存储库(Driver Store)中,该存储库位于

%WINDIR%\System32\DriverStore\FileRepository

您可以使用 PowerShell 获取驱动程序存储目录大小(

"{0:N2} GB" -f ((gci -force $Env:windir\System32\DriverStore\FileRepository -Recurse -ErrorAction SilentlyContinue| measure Length -s).sum / 1Gb)

)或图形工具。在我的家用 Windows 笔记本电脑上,FileRepository 目录占用大约 11 GB 磁盘空间,并包含 5,000 多个文件。此目录中存储了 20 多个不同版本的 NVIDIA 视频图形驱动程序。

[玩转系统] 从 Windows 驱动程序商店中删除旧的和无用的驱动程序

重要!

  • 切勿手动从 DriverStore 删除任何文件;

  • 强烈建议在清理设备驱动程序之前创建系统还原点(

    Checkpoint-Computer -Description "BeforeDriversDelete"

    ) 或备份您的 Windows 系统映像;

  • 清理驱动程序存储后,您在连接新设备时必须下载并安装驱动程序。

如何使用 PowerShell 在 Windows 中查找并删除旧驱动程序?

让我们看看如何在 Windows 中查找并删除旧版本的驱动程序。您可以使用 PowerShell 和 WMI (CIM) 类 Win32_PnPSignedDriver 显示已安装驱动程序的完整列表:

Get-WmiObject Win32_PnPSignedDriver| select DeviceName, DeviceClass,Manufacturer, DriverVersion, DriverDate,InfName|Out-GridView

在我的示例中,我获得了一个 Out-GridView 表,其中包含 Windows 存储库中的驱动程序列表,格式如下:设备名称、设备类、制造商、驱动程序版本、安装日期、驱动程序 inf 文件名 (oemXXX.inf)。

[玩转系统] 从 Windows 驱动程序商店中删除旧的和无用的驱动程序

您可以使用 Get-WindowsDriver cmdlet 获取 Windows 上安装的第三方驱动程序的列表:

Get-WindowsDriver -Online| select Driver, ClassName, BootCritical, ProviderName, Date, Version, OriginalFileName|Out-GridView

您可以使用 pnputil CLI 工具删除任何已安装的驱动程序:

pnputil.exe /remove-device oemxxx.inf

注意。 在某些情况下,仅使用 /force (-f) 开关删除驱动程序:

pnputil /remove-device oemxxx.inf /force

在表中查找具有多个版本的驱动程序,并使用 pnputil.exe 删除所有旧版本的驱动程序(最新版本除外)。

请特别小心对 Windows 启动过程至关重要的驱动程序(

BootCritical=True

)。

您还可以将已安装的驱动程序列表导出到文本文件,然后将其导入 Excel:

dism /online /get-drivers /format:table > c:\tmp\drivers.txt

删除表中所有不必要的数据,仅保留以下列:系统中的驱动程序文件(oemXXX.inf)、源INF文件的名称、设备类别、制造商、安装日期和驱动程序版本。按 B 列(包含原始 INF 文件的名称)和 F 列(驱动程序安装日期)对该表进行排序。在同名驱动程序中,将除最后一个版本之外的所有驱动程序版本标记为删除。就我而言,您可以看到大多数旧驱动程序都引用了 NVIDIA 视频适配器。

为了方便起见,让我们创建一个附加列,其中包含使用简单公式卸载每个驱动程序的命令:

=CONCATENATE("pnputil.exe -d ";A21)

[玩转系统] 从 Windows 驱动程序商店中删除旧的和无用的驱动程序

在命令提示符或 BAT 文件中复制并运行 pnputil 命令。

[玩转系统] 从 Windows 驱动程序商店中删除旧的和无用的驱动程序

pnputil.exe -d oem9.inf
Microsoft PnP Utility
Driver package deleted successfully

就我而言,我删除了 Windows 中大约 40 个旧版本的驱动程序,并清理了大约 8 GB 的空间(主要是由于删除了 NVIDIA 显卡驱动程序)。

您可以使用 RemoveOldDuplicateDrivers.ps1 PowerShell 脚本自动查找安装了多个驱动程序版本(重复项)的设备驱动程序。 (https://github.com/maxbakhub/winposh/blob/main/WindowsDesktopManagement/RemoveOldDuplicateDrivers.ps1)。

[玩转系统] 从 Windows 驱动程序商店中删除旧的和无用的驱动程序

该脚本将显示旧驱动程序版本的列表,由于安装了新版本,因此可以删除这些旧驱动程序版本。默认情况下,脚本中已注释掉找到的驱动程序的自动删除操作行。

使用磁盘清理工具删除 Windows 中的旧驱动程序

在当前版本的 Windows 10 和 11 中,您可以使用内置的 cleanmgr.exe(磁盘清理工具)来清理 Driverstore Filerepository 文件夹。

注意。您可以通过使用 Export-WindowsDriver PowerShell cmdlet 将所有第三方设备驱动程序导出到单独的文件夹来备份它们。

  1. 运行磁盘清理:Win+R -> cleanmgr;

  2. 选择系统驱动器;

    [玩转系统] 从 Windows 驱动程序商店中删除旧的和无用的驱动程序

  3. 点击清理系统文件

    [玩转系统] 从 Windows 驱动程序商店中删除旧的和无用的驱动程序

  4. 勾选列表中的设备驱动包

    [玩转系统] 从 Windows 驱动程序商店中删除旧的和无用的驱动程序

  5. 点击确定;

  6. 此清理任务将删除通过 Windows 更新或手动安装的所有以前版本的驱动程序。 Windows DriverStore 中仅保留每个驱动程序的最新版本。但是,您应该注意,设备管理器的驱动程序属性选项卡中的“回滚驱动程序”按钮将变为非活动状态。

    [玩转系统] 从 Windows 驱动程序商店中删除旧的和无用的驱动程序

    cleanmgr 任务仅删除驱动程序的重复版本。应手动删除未使用的设备驱动程序。

使用 DevManView 删除未使用的驱动程序

您可以使用小型免费工具 DevManView(由 NirSoft 提供)来查看和管理 Windows 驱动程序商店中已安装驱动程序的列表。

DevManView 是标准 Windows 设备管理器 MMC 管理单元的绝佳替代品,允许您以平面列表(表格)的形式呈现计算机上安装的驱动程序列表。

  1. 下载并运行DevManView工具;

  2. 启用“选项”菜单中的以下项目:标记已连接设备显示非即插即用驱动程序

  3. 已连接列对表格进行排序。这将允许您查看哪些设备当前已连接,哪些设备未连接;

  4. 我们建议您首先禁用选定的设备驱动程序(禁用选定的设备 -> F6),然后仅在重新启动计算机后,使用卸载选定的设备选项删除驱动程序。

    [玩转系统] 从 Windows 驱动程序商店中删除旧的和无用的驱动程序

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯