При установке или обновлении драйверов устройств в 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.
Вы можете безопасно очистить содержимое каталога FileRepository, удалив старые и неиспользуемые версии драйверов, но сделать это нужно правило, не нарушив работу системы.
Важно!
- Не удаляйте файлы и каталоги драйверов из папки DriverStore вручную;
- Прежде чем приступать к очистке, создайте резервную копию установленных драйверов, экспортировав все сторонние драйвера в отдельный каталог с помощью PowerShell командлета Export-WindowsDriver
- Перед очисткой драйверов настоятельно рекомендуется создать точку восстановления системы (
Checkpoint-Computer -Description "BeforeDriversDelete") или резервную копию образа системы; - При подключении новых устройств вам придется загружать и устанавливать драйвера заново.
Очистка старых драйверов в Windows с помощью утилиты cleanmgr
Самый безопасный способ очистить систему от старых драйверов – воспользоваться встроенной системой утилитой Очистка диска (
CleanMgr
), которая доступа во всех версиях Windows, включая Windows 10 и 11.
- Запустите утилиту «Очистка диска»: Win+R -> cleanmgr
- Выберите системный диск

- Нажмите на кнопку Clean up system files

- Отметьте в списке Device driver packages (Пакеты драйверов устройств)

- Нажмите ОК;
- Данное задание очистки удалит все предыдущие версии драйверов, установленные через Windows Update или вручную. В Windows останется только последняя версия для каждого из драйверов. При этом устройств кнопка “Откатить драйвер” (RollBack Driver) в свойствах драйвера в диспетчере устройств станет неактивной.
Задание очистки 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).

Предыдущая команда выводит все драйвера компьютера, включая системные драйвера Microsoft. Можно вывести только сторонние драйвера, установленные в Windows:
Get-WindowsDriver –Online| select Driver, ClassName, BootCritical, ProviderName, Date, Version, OriginalFileName|Out-GridView
Для удаления драйверов в Windows используете консольная утилита pnputil, в аргументе которой нужно указать имя INF файла драйвера, который нужно удалить:
pnputil.exe /delete-driver oemxxx.inf
pnputil /delete-driver oemxxx.inf /uninstall /force
Найдите в таблице драйвера, для которых присутствуют несколько версий и с помощью pnputil удалите все старые версии драйвера (кроме самой последней) ориентируясь по номеру версии и/или дате выпуска.
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)
Осталось скопировать команды pnputil и выполнить их командной строке или bat файле
В моем случае я удалил в Windows порядка 40 старых версий драйверов и освободил около 8 Гб места (в основном за счет драйверов видеокарты NVIDIA).
Для автоматического поиска драйверов устройств, для которых установлено несколько версий драйверов (дубликаты) можно использовать готовый PowerShell скрипт FindDriverDuplicates.ps1 (https://github.com/winadm/posh/blob/master/Desktop/FindDriverDuplicates.ps1).
Скрипт выведет список старых версий драйверов, которые можно удалить, т.к. для этих устройств установлены более новые версии. Вы можете вручную проверить найденные
oemXX.inf
файлы (в столбце PublishedName) и удалить их самостоятельно командой pnputil. Строка с автоматическим удалением найденных драйверов по-умолчанию в скрипте закомментированы.

Удаляем неиспользуемые драйвера с помощью 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

Утилита выведет список установленных драйверов. Удобно, что можно отсортировать установленные драйверы по занимаемому размеру, нажав по заголовку столбца Size.
Чтобы автоматически выделить только старые версии драйверов, нажмите кнопку Select Old Drivers в правой панели инструментов. Можно удалить их все, нажав кнопку Delete Drivers.
Перед удалением любого драйвера вы можете экспортировать его в локальную папку.
printmanagement.msc
) или PowerShell командлет
Remove-PrinterDriver
.



а какие параметры импорта в Excel? У меня с ходу в одном столбце при импорте находятся оба названия драйвера, разделённых вертикальной чертой:
oem94.inf | prnms009.inf
oem95.inf | prnms001.inf
oem68.inf | akspccard.inf
oem69.inf | aksusb.inf
oem26.inf | pfc027.inf
oem56.inf | wpdrapi.inf
oem11.inf | teamviewervpn.inf
oem28.inf | sm953bw.inf
oem53.inf | netrtx64.inf
типа так….
и ещё вопрос — сортировка по столбцам одновременно не получается, что сортировать в первую очередь?
Почистите файл от мусора и откройте в Excel — разделитель |.
В Excel есть уровни сортировки. Сначала сортируете по столбцу с именем inf файла, потом — по версии.
Меня интересует какой утилитой можно очистить все драйвера, которые могут привести к конфликту если перенести винду на другой пк перед созданием резервной копии акрониксом
На самом деле довольно странное желание. Тут можно только теоретически рассуждать. В теории вы можете удалить все сторонние драйвера (не Microsoft). Их список можно сформировать с помощью командлета Export-WindowsDriver (на подробный мануал есть ссылка в статье).
Потом удалите все найденные драйверы с помощью команд типа:
pnputil -f -d oemxxx.infВопрос? Как удалить НЕ oem драйверы, pnputil не позволяет удалять системные драйверы ..
Скорее всего никак, она только с OEM драйверами умеет работать …
Этот драйвер не отображается в списке?
pnputil.exe /enum-driversНасколько я помню,
dism /Remove-Driverтоже позволяет удалить только сторонние драйвера.pnputil в принципе можно оставить в покое, так как dism может почти всё.
DISM.exe /директория /Get-Drivers /all (вывести список всех драйверов)
но для удаления старых системных драйверов видимо каких то привилегий не хватает
Как очистить диск, от старых драйверов, которые заняли у меня 20 гигов памяти, хотя я, ничто не скачивал на диск? Также невозможно удалить временные файлы, поле закрытия программы или выхода из системы. Почему раньше мне, ваш совет помогал, теперь нет, что нужно делать для виндоус 10?
Размер каталога с драйверами можно получить с помощью PowerShell ( "{0:N2} GB" -f ((gci –force $Env:windir\System32\DriverStore\FileRepository –Recurse -ErrorAction SilentlyContinue| measure Length -s).sum / 1Gb) )А полностью команду можно отдельно получить? Эта, из текста, как-то не работает
Заработало
Заменил
«{0:N2} GB» -f ((gci –force $Env:windir\System32\DriverStore\FileRepository –Recurse -ErrorAction SilentlyContinue| measure Length -s).sum / 1Gb) )
на
«{0:N2} GB» -f ((Get-ChildItem C:\Windows\System32\DriverStore\FileRepository -force -Recurse -ErrorAction SilentlyContinue| measure Length -sum).sum / 1Gb)
Хрень. И так, и ак работает. Где-то не то или не так скопипастил