快訊
2026-09-01
電腦疑難雜症

Windows 舊驅動占空間怎麼清?用 PnPUtil 管理 Driver Store

約 17 分鐘閱讀
廣告

⚡ 站長快讀:核心重點

  • 文章屬性:教學實戰
  • 適用系統:Windows 10 1607 以上與 Windows 11
  • 難易度 / 耗時:⭐⭐⭐ / 約 30 分鐘
  • 核心結論:PnPUtil 清除舊驅動是官方指定的「永久移除」做法(官方原話:要確保驅動套件被永久移除、不會被自動重新安裝,就得用 pnputil 把它從 Driver Store 刪掉)——先整包匯出備份,再只刪你認得出來歷的 oem 編號。
  • 適用對象:C 槽被驅動存放區吃掉十幾 GB 的 Windows 使用者

📌 快速答案

一句話答案:PnPUtil 清除舊驅動的正規做法是先用 pnputil /enum-drivers 列出所有第三方驅動套件,確認哪些 oem 編號是同一裝置的舊版本,再對該編號執行 pnputil /delete-driver


🧰 開始前的準備

  • 系統需求:Windows 10 1607 以上。PnPUtil 本身自 Windows Vista 起就內建於每個 Windows 版本的 %windir%\system32,沒有獨立下載包;但 /enum-drivers/delete-driver/export-driver 這套新語法是 Windows 10 1607 才加入的
  • 權限需求:系統管理員。官方明列大多數 PnPUtil 指令都需要管理員權限;走裝置管理員那條路時,官方也註明權限不足者「刪除此裝置的驅動程式軟體」選項可能根本不會出現
  • 需要工具:全部內建——命令提示字元(以系統管理員身分執行)、PnPUtil、DISM。不需要安裝任何第三方軟體
  • 需要先準備的空間:一顆有足夠剩餘空間的磁碟或外接碟,用來放驅動備份;請預留不少於目前第三方驅動套件總量的空間(/Export-Driver 匯出的是所有第三方驅動套件的完整內容)
  • 預計耗時:約 30 分鐘,其中匯出備份占掉大半
  • 難度門檻:全程打指令,但沒有一行需要編輯登錄檔或改開機設定

⚠️ 執行前先讀這段:本文所有刪除動作都作用在系統的驅動程式存放區。做完整匯出備份之前,不要執行任何 /delete-driver;官方另外建議動手前先建立系統還原點,以便出事時退得回去。筆電使用者請接上電源,操作中途斷電可能讓套件處於半刪除狀態。


🔍 為什麼你需要這個?

裝了兩年的筆電,C 槽莫名其妙少掉十幾 GB,用檔案總管一層一層點下去,最後停在 C:\Windows\System32\DriverStore\FileRepository——裡面躺著幾百個名字像亂碼的資料夾,同一張顯示卡的驅動出現六份、同一款印表機出現四份,每份都好幾百 MB。想刪,資料夾又受系統保護動不了;上網搜尋,跳出來的一半是叫你「取得擁有權後整包刪掉」的災難級建議。

這個坑之所以難爬,是因為微軟從來沒有把「清理 Driver Store」寫成一篇「C 槽滿了怎麼辦」的消費者教學。官方不是沒寫過刪除驅動套件——〈Using Device Manager to uninstall devices and driver packages〉就明白教你用 pnputil /delete-driver <Published Name> /uninstall——但那篇的立場是「這個裝置有問題,要把它的驅動移乾淨」,不是「這個資料夾太肥,要瘦身」。另一邊,面向一般使用者的〈Free up drive space in Windows〉(2026-02-06 更新)主要談的是儲存空間感知、清理建議、外接儲存、搬移個人檔案、OneDrive 檔案隨選與掃毒,通篇沒有提到驅動程式套件。兩份文件之間的這道縫,就是本文要補的。

這篇要做的就是把那條官方路徑完整走一遍:先解釋 Driver Store 為什麼一定會越長越大(這決定了哪些能刪、哪些碰不得),再用 PnPUtil 與 DISM 走完「備份 → 盤點 → 判斷 → 刪除 → 驗證」,最後附上翻車時的三段回退。


🛠️ 實戰步驟

⚠️ 停止條件清單(符合任一,請先停手):

– 不確定自己的 Windows 版本或機型

– 尚未完成步驟一的完整驅動匯出備份

– 已啟用 BitLocker 但手邊沒有修復金鑰

– 公司或學校控管的設備,且未取得 IT 授權

– 沒有可開機的 Windows 安裝隨身碟或修復媒體

– 尚未建立系統還原點

– 指令輸出與本文描述明顯不符(例如 pnputil 回應找不到命令)

步驟一:先整包備份,再談刪除

在動任何一根手指刪東西之前,先把目前系統裡的第三方驅動整包匯出。DISM 對執行中的系統提供 /Export-Driver,一行就能把所有第三方驅動套件複製到你指定的目錄:

REM 以系統管理員身分執行;目的地請換成你自己的路徑
DISM /Online /Export-Driver /Destination:D:\DriverBackup

匯出的內容是完整的驅動套件(.inf 加上它引用的所有檔案),日後要復原時,可以用 pnputil /add-driver <路徑>\*.inf /subdirs /install 重新加回去,或在離線映像上用 DISM /Add-Driver 匯入(離線環境的實際操作可參考在 WinPE 內安裝驅動程式的做法)。

💡 為什麼要這樣做? Driver Store 是「唯一能拿來安裝裝置的來源」——微軟的定義是:只有存放區裡的驅動套件才能被安裝到裝置上。刪掉的套件不會進資源回收筒,系統也不會替你留一份;沒有這份匯出,誤刪一個目前無法上網下載的老裝置驅動,就是真的回不去了。

步驟二:盤點 Driver Store 裡到底有什麼

備份完成後,列出目前存放區裡的第三方驅動套件:

廣告
pnputil /enum-drivers

輸出會逐筆列出每個驅動套件,其中最關鍵的是 Published Name(發行名稱),也就是 oem0.infoem1.inf 這種編號檔名。第三方驅動被加進存放區時,系統會統一改成這個格式以確保命名唯一,而後續所有刪除動作都只認這個編號,不認原始檔名

如果驅動套件太多、螢幕捲不完,改用 DISM 出表格會好讀很多:

DISM /Online /Get-Drivers /Format:Table

兩個工具的預設行為一致:只列第三方驅動,不列 in-box 驅動。所謂 in-box,官方定義是「Windows 預設安裝或其 Service Pack 內含的驅動套件」。這件事對安全很重要——你在這份清單上看到的每一筆,都是後來裝進去的;Windows 自己帶的那些,PnPUtil 根本不會列給你,自然也刪不到。想連 in-box 一起看,DISM 要加 /all,PowerShell 的 Get-WindowsDriver -Online 則要加 -All,但那份清單只適合拿來看,不要當成刪除名單

Windows 11 22H2 以上還可以加 /files 展開每個套件的實際檔案清單,想確認某個套件到底落在磁碟哪個位置時很好用:

pnputil /enum-drivers /files

順帶一提:微軟的概念文件只說 Driver Store 位於「本機磁碟上的一個安全位置」,並沒有在該頁寫出實際路徑。C:\Windows\System32\DriverStore\FileRepository 這個路徑,你可以用上面這道 /files 指令自行印出來核對,不必相信任何轉述。

步驟三:判斷哪些可以刪

盤點完只是拿到清單,真正難的是判斷。這裡給一張表,對照 /enum-drivers 輸出的欄位使用:

廣告
情況判斷處置
同一 Provider + 同一 Class,存在多個版本舊版通常是更新後留下的殘留保留最新版,刪較舊者
裝置早已賣掉或拆掉(舊顯卡、舊印表機)目前沒有任何裝置在用可刪,但先確認不會再接回來
外接裝置的驅動(相機、手機、外接碟)裝置只是現在沒插著不要刪,拔掉不等於不用
說不出來歷、Provider 認不得資訊不足不要刪,留著幾百 MB 遠比賭一把便宜

判斷「這個驅動現在有沒有裝置在用」,可以配合裝置端的查詢指令。以下兩道都是唯讀,不會改動任何設定:

REM 列出所有裝置,並顯示各裝置比對到與實際安裝的驅動
pnputil /enum-devices /drivers
REM 只看目前連接中的裝置
pnputil /enum-devices /connected

把「目前連接中裝置實際使用的驅動」和 /enum-drivers 的清單兩相對照,沒有出現在前者、又能明確認出是舊版的,才是候選名單。

💡 為什麼不能只看版本號就砍? 因為同一顆晶片可能同時被兩個不同世代的裝置使用,舊版對舊裝置反而是唯一能用的那一版。版本號只告訴你哪個新,不告訴你哪個有人在用。

步驟四:刪除

確認完畢後,對特定編號執行刪除:

pnputil /delete-driver oem42.inf

這是最保守的形式。官方對 /force 的定義是「即使套件正被裝置使用仍予刪除」——由這句反推:不加 /force 時,正在被裝置使用的套件不會被刪掉,這正是設計上替你留的那道保護。官方另外提供兩個旗標,用途完全不同,不要混用:

旗標官方定義什麼時候用
/uninstall從任何正在使用它的裝置上解除安裝該驅動套件想連同裝置端一起換掉時
/force即使套件正被裝置使用,仍強制刪除幾乎不該用在單純清空間
/reboot若操作需要重開機則自動重開批次處理時避免中途卡住

/force 的語意值得再強調一次:它不是「刪得更乾淨」,而是繞過「有裝置正在用」這道保護。純粹為了清空間而加 /force,等於自願放棄系統替你設的最後一道防線。真的需要處理正在使用中的套件,正確順序是先 /uninstall 讓裝置換回其他可用驅動,而不是直接強拆。這裡順帶釐清一個常見的混淆:「清空間」和「移除某個裝置」是兩件事。如果你其實是被某個在裝置管理員裡怎麼移都移不掉的裝置卡住(藍牙裝置是最常見的一類),那要走的是裝置移除流程而不是本文的存放區瘦身流程,做法見裝置移不掉時的強制移除步驟

⚠️ 絕對不要做的事:取得 FileRepository 的擁有權後直接刪除資料夾。微軟的官方文件寫得很直白——檔案一旦被 staged 進 Driver Store,就不應該以任何方式被移除或修改,也不得在 staging 流程之外新增檔案。繞過流程手動刪除,存放區的索引仍然認為那些套件存在,後果會延後到下一次驅動安裝、Windows Update 或功能更新時才爆出來,屆時幾乎無從追查。

步驟五:驗證結果

刪完重新盤點一次,確認目標編號已經消失、其他編號沒被波及:

廣告
pnputil /enum-drivers

接著到裝置管理員,或用唯讀指令確認沒有裝置掉出問題碼:

REM 列出所有帶問題碼的裝置;正常情況應該什麼都不回
pnputil /enum-devices /problem

最後重開機一次,再檢查一輪 C 槽剩餘空間。兩件事要先打預防針:第一,回收的空間常常比你預期的少,原因在下一節;第二,官方明講Windows Update 若偵測到缺少必要的驅動,可能會把它裝回來,想擋住得另外調整 Windows Update 設定。也就是說,某個套件刪完又自己冒出來,不代表你刪錯了。


🔬 底層機制:這個問題到底在系統哪一層?

Driver Store 不是快取,是系統唯一的驅動來源。微軟對它的定義是「一份受信任的驅動套件集合,內含 inbox 與非 Microsoft 兩類套件,由作業系統維護在本機磁碟的安全位置」,而且只有存放區裡的套件才能被安裝到裝置上。換句話說,Windows 自己帶的驅動也住在這裡——只是 pnputil /enum-drivers 不會列出它們,你也就刪不到。把驅動套件複製進存放區的動作叫 staging;staging 與「裝到裝置上」是兩件分開的事,套件必須先 staged,之後才談得上安裝。

這個設計直接解釋了三件事。

第一,為什麼它一定會膨脹。 staging 時,驅動套件裡的所有檔案都會被完整複製一份——.inf 檔,以及 .inf 引用到的每一個檔案,一個檔案都不能少(官方明訂:.inf 若引用到套件裡沒有的檔案,整包不會被複製進存放區)。而同一個 Provider 的多個版本會並存於存放區——這件事你在自己機器上跑一次 /enum-drivers 就會看到。至於「為什麼新版不會覆蓋掉舊版」,官方文件並未直接說明;站長的理解是:裝置管理員的「回復驅動程式」要能回得去,前提就是舊版本仍留在系統上,這是推論,不是官方原話。顯示卡驅動一年更新十幾次,存放區就多出十幾份各自完整的副本。

第二,為什麼一份驅動會膨脹成好幾份。 微軟在驅動部署文件裡明講:一個驅動套件常常包含多個 .inf,而這些 .inf 往往共用同一個資料夾裡的檔案;安裝時,每個 .inf 都會被展開到各自獨立的資料夾,每個資料夾各持有一份 payload 副本這段原話出現在 DISM /Add-Driver /Recurse 對離線映像的警告方塊裡——官方是拿它警告你別把映像灌肥;把同一機制套到線上 staging 來解釋 FileRepository 為何出現十幾個名字相近、大小雷同的資料夾,是站長的推論,不是官方原文的敘述範圍。

第三,為什麼刪完省下的空間常常不如預期。 兩個原因疊在一起。一是你真正敢刪的,只有「認得出來歷、又確定沒有裝置在用」那一小撮,存放區裡其餘的多半動不得;二是檔案總管對資料夾同時有「大小」與「磁碟大小」兩個欄位,兩者本來就未必相等,你用前者估出來的回收量會偏樂觀。所以請把預期放在「回收掉那幾份你確實刪掉的舊套件」,而不是照著資料夾大小去估一個數字;本文不提供任何回收量的數值,因為那完全取決於你這台機器堆了多少舊裝置。

至於為什麼命令列上刪不成要找 PnPUtil:DISM 對執行中的作業系統(/Online)只開放 /Get-Drivers/Get-DriverInfo/Export-Driver 三個驅動選項,/Remove-Driver 只存在於離線映像模式;PowerShell 的 Remove-WindowsDriver 同樣只吃離線映像路徑。這不是漏寫,是刻意的分工:離線映像沒有正在運轉的裝置,線上系統有。

那圖形介面呢?裝置管理員也能刪——移除裝置時勾選「刪除此裝置的驅動程式軟體」即可,但官方標明那只在「該套件是被這一個裝置使用」時才會一併移除套件,而且需要管理員帳號,權限不足時該選項根本不會出現。真正一槌定音的那句話寫在同一頁上:要確保驅動套件被永久移除、不會被自動重新安裝,就必須把它從 Driver Store 刪掉,做法是用 pnputil,官方給的範例正是 pnputil /delete-driver <Published Name> /uninstall。這就是本文整套流程的官方依據。

風險方面,官方對線上與離線各自寫了一句,不要混為一談。線上(裝置管理員與 pnputil 那一頁)寫的是:如果系統上沒有其他能與該裝置相符的驅動套件,移除之後該裝置就沒有驅動可用、無法運作,並提醒動手前先建立系統還原點。離線(DISM 那一頁)寫的則是:移除開機關鍵(boot-critical)的驅動套件,會使該 Windows 映像無法開機——這句的適用範圍在官方文件裡限定於離線映像。站長我把它一併寫進來,是因為儲存控制器、晶片組這類套件本來就不該出現在「清空間」候選名單上;這一步是保守推論,不是官方對線上系統的原話


🔙 萬一翻車:回退步驟

情境一:刪完某個裝置不能用了,但系統開得起來

用步驟一的備份把驅動加回去:

pnputil /add-driver D:\DriverBackup\*.inf /subdirs /install

/subdirs 會連子資料夾一起掃,/install 會直接安裝到相符的裝置上。加回去之後跑一次 pnputil /scan-devices 讓系統重新偵測硬體。若該驅動不是系統上排名最高的驅動,PnPUtil 不會硬把它推上去,這時改從裝置管理員手動指定驅動來源資料夾。

情境二:裝置管理員出現黃色驚嘆號或問題碼

先確認範圍:

pnputil /enum-devices /problem /deviceids

拿到裝置的硬體識別碼後,優先到裝置或主機板廠商的官方支援頁重新下載該裝置的驅動安裝程式,讓廠商的安裝程式自己處理;這比從備份挑檔案可靠。若換回驅動後系統反而開始不穩,那是驅動本身的問題而不是這次清理造成的,可改用 Driver Verifier 揪出作亂的驅動程式

情境三:系統無法開機(最壞情況)

連續兩次開機失敗後,Windows 通常會自動進入修復環境(WinRE);若沒有,用事先做好的 Windows 安裝隨身碟開機,選「修復您的電腦」。進到 WinRE 後,依序嘗試:

  1. 系統還原:回到刪除前的還原點(這就是「開始前的準備」要你先建一個的原因)
  2. 解除安裝更新 / 回復:若刪除前後剛好裝過更新
  3. 就地升級修復安裝:保留檔案與應用程式,重新鋪一次系統檔與 in-box 驅動

WinRE 的命令提示字元裡也能用 DISM 對離線映像操作,但那需要正確指定映像路徑,不是慌亂中該嘗試的事。這也是為什麼步驟一的備份與「不要碰 boot-critical 驅動」兩條規則要放在最前面。


💡 總結:進階玩法與底層邏輯

站長我把這件事的重點壓成一句話:Driver Store 是可以清的,但它不是暫存資料夾,不能用清暫存的心態對待。

有幾個延伸判斷值得記下來。

想批次處理的人,可以用 /enum-drivers 搭配 /class 先縮小範圍——Windows 11 21H2 以上支援 pnputil /enum-drivers /class "Display" 這種寫法,顯示卡驅動堆得最兇,通常從這一類開始效益最高。想用 PowerShell 撈成物件排序的,Get-WindowsDriver -Online 預設同樣只回第三方驅動;要注意的是它跟 DISM 一樣只能查,不能在線上刪,最終還是要落回 PnPUtil。

想要圖形介面的話,開源工具 Driver Store Explorer(RAPR) 是社群長年在用的選項:GitHub 上的最新版是 2026-03-31 釋出的 v1.0.26,GPL-2.0 授權,需要 Windows 7 以上、.NET Framework 4.7.2 以上與系統管理員權限,也可以用 winget install lostindark.DriverStoreExplorer 安裝,專案 README 另有繁體中文版。它的「Select Old Driver(s)」能自動挑出被新版取代的舊驅動,底層則是呼叫原生 API、DISM 或 PnPUtil。但請把作者自己寫在 README 最上方的警語一起讀進去:這個工具會修改 Windows 驅動存放區,使用不當可能造成系統故障、無法開機或裝置功能喪失,刪除前務必先備份驅動;README 也註明「Select Old Driver(s)」的結果可能有出入。介面把難度降低了,判斷責任並沒有轉移。

還有一個容易被忽略的細節:RAPR 把裝置名稱顯示成灰色,代表該驅動對應的裝置目前沒有連接——相機、手機、外接硬碟都屬於這一類。灰色不等於沒用,刪掉的代價是下次接上去要重裝。

最後回到最開頭那個問題:如果你清完發現回收量遠低於資料夾大小給你的想像,那多半就是這台機器的實際狀況,不是你哪一步做錯了。C 槽真的長期吃緊,「就地升級修復安裝」或重灌一次的效益,通常比反覆掃驅動存放區高得多——後者的天花板受限於你有多少舊裝置,而前者是把整個系統的歷史包袱一次歸零。

*(本文為官方文件交叉查證之深度解析,非第一手實測;文中不含任何站長自行量測的數據。)*


❓ 常見問題

Q:Driver Store 為什麼會占那麼多空間?

因為驅動套件進存放區時會把 .inf 與它引用的所有檔案完整複製一份,而同一裝置的多個版本會並存;再加上一個驅動套件內含多個 .inf 時,每個 .inf 會各自展開到獨立資料夾、各持有一份檔案副本——後面這一條的官方原話寫在 DISM /Add-Driver /Recurse 對離線映像的警告方塊裡,套用到線上 staging 是站長的推論(詳見本文「底層機制」節)。顯示卡與印表機驅動最容易堆積。

Q:PnPUtil 刪除舊驅動安全嗎?

在三個前提下算安全:先做完整匯出備份、先建立系統還原點(官方在裝置管理員那頁明文建議)、以及不加 /force。官方對 /force 的定義是「即使套件正被裝置使用仍予刪除」,反過來說,不加它就刪不掉正在使用中的套件——這道保護就是安全性的來源。真正危險的做法是取得擁有權後手動刪 FileRepository 資料夾——官方明文寫著 staged 進存放區的檔案不應以任何方式被移除或修改。

Q:怎麼知道哪些驅動可以刪?

三個條件同時成立才刪:同一 Provider 與 Class 出現多個版本、你認得出裝置來歷、而且該裝置不是「只是暫時沒插著」。用 pnputil /enum-devices /drivers 對照目前裝置實際使用的驅動,沒被任何裝置使用的舊版才是候選。認不出來歷的一律不動。

Q:可以直接刪掉 Windows 自己的驅動嗎?

不行,也不需要擔心誤刪。pnputil /enum-driversDISM /Online /Get-Drivers 預設都只列第三方套件,in-box 驅動(Windows 預設安裝或其 Service Pack 內含者)根本不在清單上;DISM 在離線模式也明文寫著無法移除預設驅動。

Q:這個方法在舊版本也適用嗎?

/enum-drivers/delete-driver/export-driver 這套語法需要 Windows 10 1607 以上。更舊的系統只有舊式參數(-e 等同 /enum-drivers-d [-f] 等同 /delete-driver [/force]),官方目前仍支援但已列為 legacy,建議改用新語法。/class 篩選需要 Windows 11 21H2,/files 需要 Windows 11 22H2。


🔗 延伸閱讀


📎 參考資料來源

📖 第一級|廠商官方:

⚠️ 本文核心事實以第一級為準。

📅 本文查證戳記:2026-09-01 依 Microsoft Learn 現行文件撰寫,未含第一手實測數據。

若你在後續版本遇到步驟失效,歡迎在留言區回報,站長會更新文章。


廣告