
Когда вы устанавливаете или обновляете драйверы устройств в 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 ГБ дискового пространства и содержит более 5 000 файлов. В этой директории хранится более 20 различных версий графического драйвера видео NVIDIA.
- Никогда не удаляйте файлы из DriverStore вручную;
- Перед очисткой драйверов устройств настоятельно рекомендуется создать точку восстановления системы (
Checkpoint-Computer -Description "BeforeDriversDelete"
) или создать резервную копию образа системы Windows; - После очистки хранилища драйверов вам придется загружать и устанавливать драйверы при подключении новых устройств.
Как найти и удалить старые драйверы в 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:
Get-WindowsDriver –Online| select Driver, ClassName, BootCritical, ProviderName, Date, Version, OriginalFileName|Out-GridView
Удалить любой из установленных драйверов можно с помощью инструмента pnputil CLI:
pnputil.exe /remove-device oemxxx.inf
pnputil /remove-device oemxxx.inf /force
Найдите в таблице драйверы, имеющие несколько версий, и удалите все старые версии драйвера (кроме последней) с помощью pnputil.exe.
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.
pnputil.exe –d oem9.inf
Microsoft PnP Utility
Driver package deleted successfully
В моем случае я удалил около 40 старых версий драйверов в Windows и освободил около 8 ГБ пространства (в основном за счет удаления драйверов видеокарты NVIDIA).
Вы можете использовать RemoveOldDuplicateDrivers.ps1 Сценарий PowerShell для автоматического поиска драйверов устройств, в которых установлено несколько версий драйверов (дубликатов). (https://github.com/maxbakhub/winposh/blob/main/WindowsDesktopManagement/RemoveOldDuplicateDrivers.ps1 ).
Сценарий отобразит список старых версий драйверов, которые можно удалить, поскольку установлены более новые версии. Строки с действиями по автоматическому удалению найденных драйверов по умолчанию закомментированы в скрипте.
Удаление старых драйверов в Windows с помощью инструмента очистки диска
В текущих версиях Windows 10 и 11 для очистки папки Driverstore Filerepository можно использовать встроенный инструмент cleanmgr.exe (Disk Cleanup tool).
- Запустите очистку диска: Win+R -> cleanmgr;
- Выберите системный диск;
- Нажмите Очистка системных файлов;
- Проверьте Пакеты драйверов устройств в списке;
- Нажмите OK;
- Эта задача очистки удалит все предыдущие версии драйверов, установленные через Windows Update или вручную. В Windows DriverStore останется только последняя версия каждого из драйверов. Однако следует помнить, что кнопка «Откатить драйвер» на вкладке «Свойства драйвера» в диспетчере устройств станет неактивной. Задача cleanmgr удаляет только дубликаты драйверов. Неиспользуемые драйверы устройств следует удалять вручную.
Удаление неиспользуемых драйверов с помощью DevManView
Вы можете использовать небольшой бесплатный инструмент DevManView (компания NirSoft) для просмотра и управления списком установленных драйверов в Магазине драйверов Windows.
DevManView является отличной альтернативой стандартной оснастке MMC Диспетчера устройств Windows и позволяет представить список установленных на компьютере драйверов в виде плоского списка (таблицы).
- Скачайте и запустите программу DevManView инструмент;
- Включите следующие пункты в меню «Параметры»: Отметить подключенные устройства и Показать драйверы, которые не подключаются и не воспроизводятся;
- Отсортируйте таблицу по Подключено колонка. Это позволит вам увидеть, какие устройства подключены в данный момент, а какие нет;
- Мы рекомендуем сначала отключить драйверы выбранных устройств (Отключение выбранных устройств -> F6) и только после перезагрузки компьютера удалите драйверы с помощью команды Удаление выбранных устройств вариант.