logo

Driver Store Explorer (RAPR)

🌏: English | Türkçe | 한국어 | 简体中文 | 繁體中文
--- [![Build Status](https://ci.appveyor.com/api/projects/status/kqtvhfq23am2gq26/branch/master?svg=true)](https://ci.appveyor.com/project/lostindark/driverstoreexplorer/branch/master) [![Build Status](https://github.com/lostindark/DriverStoreExplorer/actions/workflows/ci.yml/badge.svg)](https://github.com/lostindark/DriverStoreExplorer/actions/workflows/ci.yml) ## ⚠️ Warning **Driver Store Explorer modifies the Windows driver store. Improper use can cause system malfunction, prevent Windows from booting, or result in loss of device functionality. Know the risks before proceeding. Always back up your drivers before deleting anything.** --- ## What is Driver Store Explorer? Driver Store Explorer (RAPR) is a powerful tool for viewing, managing, and cleaning up the Windows [DriverStore](https://msdn.microsoft.com/en-us/library/ff544868(VS.85).aspx). It is intended for advanced users and administrators. If you are not familiar with Windows internals, use of this tool is discouraged. --- ## Features ### Core Operations * **Browse & List**: View all third-party driver packages with detailed metadata (size, version, date etc.) * **Add/Install**: Install new driver packages with optional automatic device installation * **Remove/Delete**: Delete single or multiple drivers with force deletion for in-use drivers _Note: The exact implications of removing or deleting drivers depend on system state and usage. Exercise caution, as removal may affect device functionality or require reinstallation of drivers for certain hardware._ * **Export**: Backup selected or all drivers to organized folder structures * **Smart Cleanup**: Automatically identify and select old/unused driver versions ### Advanced Capabilities * **Multiple APIs**: Native Windows API, DISM, or PnPUtil backend support with auto-detection * **Online & Offline**: Work with local machine or offline Windows image driver stores * **Device Association**: View connected devices and their presence status * **Batch Operations**: Multi-select for bulk operations with progress tracking * **Real-time Search**: Live filtering and CSV export for analysis ### User Interface * **Multi-language**: 20+ languages with RTL support * **Customizable**: Sortable columns, grouping, and flexible layout * **Visual Feedback**: Color coding, selection highlighting, and detailed logging --- ## Understanding Driver Status and Removal Options - **Old drivers:** Drivers are considered as "old" when newer versions exist on the system. Removing these can help free up space and reduce clutter, but may impact compatibility with certain devices or configurations. Consider backing up drivers before removal. The "Select Old Driver(s)" can automatically identify old drivers, though results may vary. - **Unused drivers:** "Select Unused Driver(s)" selects drivers without an associated device, not drivers proven safe to delete. Essential antivirus, network service, printer, and other software drivers may also be selected. Both the button and context menu show a warning before changing the selection; Cancel is the default. A yellow status reminder remains alongside operation results while any of these drivers are checked; errors remain red without hiding the reminder. Successful driver-package exports clear the reminder for the backed-up drivers; CSV exports and failed backups do not. Review the selected drivers and back them up before deletion. - **Grayed Device Names:** Drivers shown with device names in gray are associated with devices that are not currently connected (such as cameras, phones, or external drives). If you remove these drivers, you will need to reinstall them if you reconnect the device in the future. - **Offline Cleanup:** Automatic old/unused driver selection is disabled for offline stores because device usage cannot be established reliably. Drivers can still be selected manually for removal. - **Force Deletion:** Use this option if you need to delete a driver that is currently in use. Note: This option may not work for print drivers. --- ## Screenshot ![Screenshot of DriverStoreExplorer](https://github.com/user-attachments/assets/2d7df896-494d-4bcd-b064-5f05696cd0d3) --- ## Installation ### Requirements - Windows 7 or newer - .NET Framework 4.7.2 or newer - Administrator privileges ### Option 1: Download Pre-built Binary (Recommended) 1. Go to the [latest release page](https://github.com/lostindark/DriverStoreExplorer/releases/latest) 2. Download the latest ZIP archive 3. Extract the files to a folder of your choice 4. Run `Rapr.exe` The in-app updater validates the replacement executable before changing the installation. If you rename the portable executable, updates preserve that filename and its accompanying `.exe.config` filename. If installation fails, the updater restores overwritten configuration and supporting files along with the original executable, and removes newly installed files. If rollback cannot complete, the error is reported and backups are retained for recovery. When the application folder is writable, settings are stored alongside the executable. Existing per-user preferences are imported before switching to a new portable configuration; older configurations are retained if migration or save verification fails. ### Option 2: Install via Winget (Recommended) ```powershell winget install lostindark.DriverStoreExplorer ``` After installation, launch the tool by running: ```powershell rapr ``` ### Option 3: Build from Source 1. Clone or download this repository 2. Open `Rapr.sln` in Visual Studio 2022 3. Build the solution (Build → Build Solution or Ctrl+Shift+B) 4. Run the executable from the output directory --- ## Creating an Official Release Open **Actions → Release → Run workflow** on `master`, or run: ```powershell gh workflow run release.yml --ref master ``` No version or build ID is required. With the version input blank, the workflow selects the newest successful `master` push CI run (not necessarily the latest commit if its CI is pending or failed), verifies that its version tag points to its source commit, and downloads that exact run's artifact. It then signs the build, generates release notes, and creates a **draft**. It does not rebuild or assign a new version. To prepare a specific version again, supply `version` with or without the `v` prefix: ```powershell gh workflow run release.yml --ref master -f version=1.0.28 ``` The workflow selects the latest successful CI run for that tagged commit. An existing draft's notes and signed ZIP are refreshed; published releases are never modified. Approve the SignPath signing request if required, then review and publish the draft under **Releases**. Publication triggers WinGet submission. Existing tags are not moved or overwritten. If the selected artifact has expired, its tag is inconsistent, or the release is already published, the workflow stops instead of releasing a different build. CI assigns an increasing patch version and tag to each new `master` push; reruns reuse its existing tag. Failed builds can leave gaps in the version sequence. PR builds get unique preview versions and artifact names without creating release tags. ## Project History Originally hosted at [https://driverstoreexplorer.codeplex.com/](https://web.archive.org/web/20190417132137/https://archive.codeplex.com/?p=driverstoreexplorer). ## Credits - [ObjectListView](http://objectlistview.sourceforge.net/) - [Managed DismApi Wrapper](https://github.com/jeffkl/ManagedDism) - [FlexibleMessageBox](https://www.codeproject.com/Articles/601900/FlexibleMessageBox-A-Flexible-Replacement-for-the) - [Resource Embedder](https://github.com/0xced/resource-embedder) - [PortableSettingsProvider](https://github.com/bluegrams/SettingsProviders) - [Strong Namer](https://github.com/dsplaisted/strongnamer) ## Sponsors Free code signing on Windows provided by [SignPath.io], certificate by [SignPath Foundation]. [SignPath.io]: https://signpath.io [SignPath Foundation]: https://signpath.org