При установке или обновлении драйверов устройств в 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 Гб и содержит >5000 файлов. В частности, в этом каталоге хранится более 20 различных версий видеодрайвера Nvidia.
- Не удаляйте файлы и каталоги драйверов из папки DriverStore вручную;
- Перед очисткой драйверов настоятельно рекомендуется создать точку восстановления системы (
Checkpoint-Computer -Description "BeforeDriversDelete"
) или резервную копию образа системы; - При подключении новых устройств вам придется загружать и устанавливать драйвера заново.
Поиск и удаление старых версий драйверов в 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
pnputil /remove-device oemxxx.inf /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).
Скрипт выведет список старых версий драйверов, которые можно удалить, т.к. для этих устройств установлены более новые версии. Строки с автоматическим удалением найденных драйверов по-умолчанию закомментированы в скрипте.
Удаление старых драйверов в Windows с помощью утилиты очистки диска cleanmgr
В современных версиях Windows 10 и 11 вы можете использовать утилиту очистки диска
cleanmgr.exe
для удаления старых версий драйверов (эта же утилита позволяет удалить устаревшие обновления).
- Запустите утилиту «Очистка диска»: Win+R -> cleanmgr
- Выберите системный диск
- Нажмите на кнопку Clean up system files
- Отметьте в списке Device driver packages (Пакеты драйверов устройств)
- Нажмите ОК;
- Данное задание очистки удалит все предыдущие версии драйверов, установленные через Windows Update или вручную. В Windows останется только последняя версия для каждого из драйверов. При этом устройств кнопка “Откатить драйвер” (RollBack Driver) в свойствах драйвера в диспетчере устройств станет неактивной. Задание очистки cleanmgr удаляет только дубликаты (версии) драйверов. Неиспользуемые драйверы устройств вам придется удалить вручную.
Удаляем неиспользуемые драйвера с помощью DevManView
Для просмотра списка установленных драйверов в Windows можно использовать небольшую бесплатную утилиту DevManView от NirSoft (https://www.nirsoft.net/utils/device_manager_view.html)
Утилита DevManView предоставляет собой альтернативу стандартному диспетчеру устройств Windows и позволяет представить список драйверов, установленных на компьютере, в виде плоского списка (таблицы).
- Скачайте и запустите утилиту DevManView;
- Включите следующие параметры в меню Options: Mark Connected Devices и Show Non Plug and Play Drivers;
- Отсортируйте таблицу по столбцу Connected. Это позволит понять какие устройства сейчас подключены, а какие нет;
- В целях стабильности рекомендуем сначала отключить выбранные драйвера (Disable Selected Devices –> F6) и только после перезагрузки удалять драйвера с помощью опции Uninstall Selected Devices.