В Windows при установке или обновлении драйверов устройств, старые версии драйверов сохраняются в системе. Тем самым пользователю предоставляется возможность в любой момент вернуть старую версию драйвера, если новый драйвер работает нестабильно (полезная возможность, как показал кейс с в которой пришлось окатить версию драйвера Wi-Fi). Однако Windows автоматически не чистит и не удаляет старые версии драйверов, поэтому со временем, размер места, занимаемого драйверами на системном диске становится довольно большим. В этой статье мы поговорим о способах удаления старых версий драйверов (дубликатов) с помощью внутренних средств системы (без использования стороннего ПО).
Windows хранит все файлы в драйверов в своем репозитории драйверов (Driver Store), находящемся в каталоге %WINDIR%\System32\DriverStore\FileRepository.
В моем случае на домашнем ноутбуке с Windows 7 (дата установки системы почти 8 лет назад), каталог FileRepository занимает на диске около 11 Гб и содержит >5000 файлов. Немало! В частности в этом каталоге хранится более 20 различных версий видеодрайвера Nvidia.
Важно!
- Ни в коем случае нельзя удалять файлы драйверов из каталога DriverStore вручную.
- Перед очисткой драйверов настоятельно рекомендуется создать точку восстановления системы (
Checkpoint-Computer -Description «BeforeDriversDelete»
) или резервную копию образа системы. - После очистки хранилища, при подключении новых устройств возможно придется качать и устанавливать драйвера вручную.
Поиск и удаление старых версий драйверов в Windows 7
Рассмотрим способ поиска и удаления устаревших драйверов для Windows 7 (в Windows 8 и Windows 10 есть более простые методы удаления старых драйверов, о них написано ниже).
Получим список всех сторонних драйверов, имеющихся в системе, и выгрузим их в текстовый файл. Для этого в командной строке с правами администратора выполним команду:
dism /online /get-drivers /format:table > c:\tmp\drivers.txt
Полученный файл импортируем в Excel и удаляем все лишние данные так, чтобы осталась только таблица со списков драйверов репозитория в формате: номер драйвера в системе (oemXXX.inf), имя оригинального inf файла, класса устройства, производителя, даты установки и версии драйвера.
Полученную таблицу отсортируем по столбцу B (содержит имя оригинального inf файл) и столбцу F (дата установки драйвера). Среди групп одноименных драйверов помечаем для удаления все версии драйверов, кроме последней. В моем случае видно, что большинство старых версий драйверов принадлежит NVIDIA.
Для удаления драйвера можно использовать команду pnputil:
pnputil.exe -d oemxxx.inf
pnputil -f -d oemxxx.inf
Для удобства сформируем в пустом столбце команды для удаления каждого драйвера с помощью формулы =CONCATENATE("pnputil.exe -d ";A21)
Осталось сформированные команды скопировать и выполнить в командной строке или bat файле.
Таким образом, я удалил из системы порядка 40 старых версий драйверов, освободив тем самым около 8 Гб места (в основном за счет видеодрайверов NVIDEA).
Удаление старых драйверов в Windows 10/8 с помощью утилиты очистки диска
В Windows 10 / 8.1 есть более удобный инструмент для удаления старых версий драйверов — всем знакомая утилита очистки диска cleanmgr.exe, позволяющая в том числе очистить диск от уставших обновлений.
Примечание. В Windows 10 и Windows 8 Upd 1 и есть возможность экспортировать средствами PowerShell все сторонние драйвера, имеющиеся в системе в отдельный каталог.
- Запустите утилиту «Очистка диска»: Win+R -> cleanmgr
- Выберите системный диск
- Нажмите на кнопку Clean up system files
- Отметьте в списке Device driver packages (Пакеты драйверов устройств)
Примечание. На моем ПК размер хранимых копий драйверов равен 0. На реальных систем это значение скорее всего будет отличаться
- Нажмите ОК.
Утилита cleanmgr удалит все старые неиспользуемые версии драйверов. Однако при этом, нужно понимать, что в свойствах драйверов в диспетчере устройств кнопка «Откатить драйвер» станет неактивной.