- C:
- Windows
- System32
- DriverStore
- FileRepository
FolderRisk: Do not touch
FileRepository C:\Windows\System32\DriverStore\FileRepository
Driver Store folder holding driver packages, one subfolder per package; clean it only with pnputil.
What it’s for
FileRepository is the Driver Store’s depot: driver packages are kept here in full (INF, catalogs, binaries). When a package is added (staging), Windows copies it here, then installs it on the matching hardware from this reference copy. That is why a driver can be reinstalled without media.
What it contains
- One subfolder per package, named after its INF, the architecture and a hash, for example
name.inf_amd64_<hash>. - In each, the driver files:
.inf,.cat,.sys,.dlland related files. - Several versions of the same driver side by side, notably graphics drivers that update often. The folder easily reaches several gigabytes.
Risks and best practices
- Never delete a subfolder by hand: the published INF and the Plug and Play manager’s metadata would no longer match, with unpredictable behavior.
- Folder names follow the original INF, not
oemNN.inf.pnputil /enum-driversgives the mapping (“Published Name” and “Original Name”). - To free space, delete unused old versions with
pnputil /delete-driver. Without/force, a driver a device is still using is not deleted. - Before removing a storage, network or graphics driver, create a restore point or a backup.
Useful commands
# Third-party packages: published name, original name, provider, versionpnputil /enum-drivers
# Largest subfoldersGet-ChildItem "$env:windir\System32\DriverStore\FileRepository" -Directory | ForEach-Object { [pscustomobject]@{ Package = $_.Name MB = [math]::Round(((Get-ChildItem $_.FullName -Recurse -File -ErrorAction SilentlyContinue | Measure-Object Length -Sum).Sum / 1MB), 1) } } | Sort-Object MB -Descending | Select-Object -First 10:: Delete an old unused package (as administrator); replace oemXX.inf with the published namepnputil /delete-driver oemXX.inf