Удаляем старые драйвера из хранилища Windows (Driver Store)

Удаляем старые драйвера из хранилища Windows (Driver Store)

При установке или обновлении драйверов устройств в Windows, старые версии драйверов сохраняются в системе. Это позволяет пользователю откатиться к предыдущей версии драйвера, если новый драйвер работает нестабильно. Однако Windows автоматически не удаляет старые и неиспользуемые версии драйверов, поэтому со временем размер места, занимаемого драйверами на системном диске становится довольно большим. В этой статье мы рассмотрим несколько способов удаления старых версий драйверов (дубликатов) в Windows с помощью встроенных и сторонних средств.

Windows хранит все файлы в драйверов в своем репозитории драйверов (Driver Store), находящемся в каталоге
%WINDIR%System32DriverStoreFileRepository.

Размер каталога с драйверами можно получить с помощью PowerShell (
"{0:N2} GB" -f ((gci –force $Env:windirSystem32DriverStoreFileRepository –Recurse -ErrorAction SilentlyContinue| measure Length -s).sum / 1Gb)
) или графических утилит. В моем случае на домашнем ноутбуке с Windows каталог FileRepository занимает на диске около 11 Гб и содержит >5000 файлов. В частности, в этом каталоге хранится более 20 различных версий видеодрайвера Nvidia.

Размер каталог DriverStore FileRepository в Windows

Важно!
  1. Не удаляйте файлы и каталоги драйверов из папки DriverStore вручную;
  2. Перед очисткой драйверов настоятельно рекомендуется создать точку восстановления системы (
    Checkpoint-Computer -Description "BeforeDriversDelete"
    ) или резервную копию образа системы;
  3. При подключении новых устройств вам придется загружать и устанавливать драйвера заново.

Поиск и удаление старых версий драйверов в Windows с помощью PowerShell

Рассмотрим способ поиска и удаления старых версий драйверов в 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).

получить полный список установленных драйверов в хранилище DriverStore Windows с помощью PowerShell

Вы можете получить список сторонних драйверов, установленных в Windows с помощью командлета:

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

Вы можете удалить любой из установленный драйверов с помощью утилиты pnputil:

pnputil.exe /remove-device oemxxx.inf

Примечание. В некоторых случаях удалить драйвер можно только с ключом force (-f):
pnputil /remove-device oemxxx.inf /force

Найдите в таблице драйвера, для которых присутствуют несколько версий и удалите все старые версии драйвера (кроме самой последней) с помощью pnputil.

Будьте особо внимательными с драйверами, важными при загрузке Windows (
BootCritical=True
)

Также вы можете выгрузить список драйверов в текстовый файл и импортировать его в Excel:

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

Удалите все лишние данные в таблице и оставьте только столбцы: файл драйвера в системе (oemXXX.inf), имя оригинального inf файла, класс устройства, производителя, даты установки и версии драйвера. Отсортируйте таблицу по столбцам B (содержит имя оригинального inf файл) и столбцу F (дата установки драйвера). Среди групп одноименных драйверов отметьте для удаления все версии драйверов, кроме последней. В моем случае видно, что большинство старых версий драйверов принадлежит NVIDIA.

Для удобства сформируйте в пустом столбце команду для удаления каждого драйвера с помощью формулы
=CONCATENATE("pnputil.exe -d ";A21)

списки драйверов с версиями в ExcelОсталось скопировать команды pnputil и выполнить их командной строке или bat файле.

pnputil.exe d oemxxx.inf - удаление драйвера

В моем случае я удалил в Windows порядка 40 старых версий драйверов и освободил около 8 Гб места (в основном за счет драйверов видеокарты NVIDIA).

Для автоматического поиска драйверов устройств, для которых установлено несколько версий драйверов (дубликаты) можно использовать готовый PowerShell скрипт FindDriverDuplicates.ps1 (https://github.com/winadm/posh/blob/master/Desktop/FindDriverDuplicates.ps1).

Скрипт выведет список старых версий драйверов, которые можно удалить, т.к. для этих устройств установлены более новые версии. Строки с автоматическим удалением найденных драйверов по-умолчанию закомментированы в скрипте.

powershell скрип для поиска/удаления дубликатов и старых версий драйверов в windows

Удаление старых драйверов в Windows с помощью утилиты очистки диска cleanmgr

В современных версиях Windows 10 и 11 вы можете использовать утилиту очистки диска
cleanmgr.exe

для удаления старых версий драйверов (эта же утилита позволяет удалить устаревшие обновления).

  1. Запустите утилиту «Очистка диска»: Win+R -> cleanmgr
  2. Выберите системный дискdisk cleanup: cleanmgr.exe
  3. Нажмите на кнопку Clean up system files Очистка системных файлов
  4. Отметьте в списке Device driver packages (Пакеты драйверов устройств)Удаление старых пакетов драйверов в Windows 10
  5. Нажмите ОК;
  6. Данное задание очистки удалит все предыдущие версии драйверов, установленные через Windows Update или вручную. В Windows останется только последняя версия для каждого из драйверов. При этом устройств кнопка “Откатить драйвер” (RollBack Driver) в свойствах драйвера в диспетчере устройств станет неактивной. после удаления старых версий драйверов нельзя откатиться на старую версию драйвера windows

    Задание очистки cleanmgr удаляет только дубликаты (версии) драйверов. Неиспользуемые драйверы устройств вам придется удалить вручную.

Удаляем неиспользуемые драйвера с помощью DevManView

Для просмотра списка установленных драйверов в Windows можно использовать небольшую бесплатную утилиту DevManView от NirSoft (https://www.nirsoft.net/utils/device_manager_view.html)

Утилита DevManView предоставляет собой альтернативу стандартному диспетчеру устройств Windows и позволяет представить список драйверов, установленных на компьютере, в виде плоского списка (таблицы).

  1. Скачайте и запустите утилиту DevManView;
  2. Включите следующие параметры в меню Options: Mark Connected Devices и Show Non Plug and Play Drivers;
  3. Отсортируйте таблицу по столбцу Connected. Это позволит понять какие устройства сейчас подключены, а какие нет;
  4. В целях стабильности рекомендуем сначала отключить выбранные драйвера (Disable Selected Devices –> F6) и только после перезагрузки удалять драйвера с помощью опции Uninstall Selected Devices.DevManView утилита для управления драйверами в driverstore

Windows 10
Удаляем старые драйвера из хранилища Windows (Driver Store)