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

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

Как корректно очистить папку FileRepository в DriverStore?

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

При установке новых драйверов, Windows не удаляет старые версии из этого каталога (в том числе при автоматическом обновлении драйверов, которое включено в Windows по умолчанию). Чаще всего причиной резкого роста размера хранилища драйверов является частые обновления драйверов графических адаптеров NVIDIA и AMD, звуковых карт Realtek, и другого оборудования. Так размер одной версии драйвера GPU может достигать гигабайта. Поэтому со временем размер каталога FileRepository может превышать несколько десятков Гб.

Текущий размер каталога с драйверами можно узнать с помощью PowerShell ( "{0:N2} GB" -f ((gci –force $Env:windir\System32\DriverStore\FileRepository –Recurse -ErrorAction SilentlyContinue| measure Length -s).sum / 1Gb) ) или графических утилит (например, WinDirStat).

В моем случае на домашнем ноутбуке с Windows каталог FileRepository занимает на диске около 11 Гб и содержит >5000 файлов. В частности, в этом каталоге хранится более 20 различных версий видеодрайвера Nvidia.

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

Вы можете безопасно очистить содержимое каталога FileRepository, удалив старые и неиспользуемые версии драйверов, но сделать это нужно правило, не нарушив работу системы.

Важно!

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

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

Самый безопасный способ очистить систему от старых драйверов – воспользоваться встроенной системой утилитой Очистка диска ( CleanMgr ), которая доступа во всех версиях Windows, включая Windows 10 и 11.

  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 удаляет только дубликаты (старые версии) драйверов. Неиспользуемые драйверы устройств вам придется удалить вручную.

Поиск и удаление старых версий драйверов в 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

Предыдущая команда выводит все драйвера компьютера, включая системные драйвера Microsoft. Можно вывести только сторонние драйвера, установленные в Windows:

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

Для удаления драйверов в Windows используете консольная утилита pnputil, в аргументе которой нужно указать имя INF файла драйвера, который нужно удалить:

pnputil.exe /delete-driver oemxxx.inf

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

pnputil /delete-driver oemxxx.inf /uninstall /force

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

Будьте особо внимательными с драйверами, критичными для загрузки 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)

списки драйверов с версиями в 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).

Скрипт выведет список старых версий драйверов, которые можно удалить, т.к. для этих устройств установлены более новые версии. Вы можете вручную проверить найденные oemXX.inf файлы (в столбце PublishedName) и удалить их самостоятельно командой pnputil. Строка с автоматическим удалением найденных драйверов по-умолчанию в скрипте закомментированы.

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

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

Для просмотра списка установленных драйверов в Windows можно использовать небольшую бесплатную утилиту Driver Store Explorer (известную как RAPR). Это open-source утилита доступна на GitHub (https://github.com/lostindark/DriverStoreExplorer) и проще всего установить ее через пакетный менеджер Windows:

winget install lostindark.DriverStoreExplorer

Чтобы запустите Driver Store Explorer, выполните команду:

rapr.exe

Утилита Driver Store Explorer (rarp) позволяет найти и очистить старые версии драйверов в Windows

Утилита выведет список установленных драйверов. Удобно, что можно отсортировать установленные драйверы по занимаемому размеру, нажав по заголовку столбца Size.

Чтобы автоматически выделить только старые версии драйверов, нажмите кнопку Select Old Drivers в правой панели инструментов. Можно удалить их все, нажав кнопку Delete Drivers.

Перед удалением любого драйвера вы можете экспортировать его в локальную папку.

Обратите внимание, что для просмотра и удаления драйверов принтеров (версий драйверов печати тоже со временем накапливается очень много) лучше использовать специализированные инструменты, например оснастку Print Management ( printmanagement.msc ) или PowerShell командлет Remove-PrinterDriver .


Предыдущая статья Следующая статья


Комментариев: 11 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)