Удаляем старые драйвера из хранилища 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.

Важно !
  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 ).

Вы можете получить список сторонних драйверов, установленных в 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)

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

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

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

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

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

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

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

Share
Published by
admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

2 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

2 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

2 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

2 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

2 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

2 месяца ago