快訊
2026-10-15
電腦疑難雜症

Minifilter 驅動是什麼?用 fltmc 指令揪出防毒與備份軟體怎麼攔截你的檔案

約 16 分鐘閱讀
廣告

⚡ 站長快讀:核心重點

  • 文章屬性:教學實戰
  • 適用系統:Windows 11 / Windows 10(fltmc.exe 系統內建)
  • 難易度 / 耗時:⭐⭐ 查詢 / ⭐⭐⭐ 卸離卸載;約 10 分鐘
  • 核心結論:防毒、備份與雲端同步,幾乎都靠一支 Minifilter 驅動掛在檔案系統 I/O 路徑上工作;以系統管理員跑 fltmc filters 列出全部,再用官方 altitude 區間表反查每一支在做什麼。
  • 適用對象:檔案存取變慢、存檔卡住或檔案莫名被鎖,想知道是哪支軟體在攔的使用者與 IT 人員

📌 快速答案

一句話答案:Minifilter 驅動是檔案系統的過濾驅動,由檔案系統過濾管理員 FltMgr 依 altitude 高低排序,逐一呼叫來攔截或觀察每一次檔案存取。


🧰 開始前的準備

  • 系統需求:Windows 11 或 Windows 10 皆可。fltmc.exe 是 Windows 隨附的系統命令列工具,在終端機直接輸入即可呼叫,不需要安裝 WDK。
  • 權限需求:系統管理員。微軟官方文件寫得很直接:要在具有系統管理員權限的命令提示字元底下輸入 fltmc help,才看得到完整指令清單。
  • 需要工具:全部內建。想再往下挖一層,才需要 Windows 偵錯工具(WinDbg)的 !fltkd 擴充指令。
  • 預計耗時:純查詢與判讀約 10 分鐘。
  • 難度門檻:只要會「以系統管理員身分執行」終端機,前三個步驟就能做完;第四步以後屬於除錯範疇,建議看得懂就好、不要手癢。

🔬 證據等級 E3(第三方權威資料查證):本文的 altitude 區間、驅動檔名數值、fltmc 的官方定位與載入/卸載行為,均取自 Microsoft Learn 官方文件逐字查證(查證日 2026-09-18);指令實際輸出的欄位名稱則是工具內建說明的範疇,不在上述官方頁面所載範圍,請以你機器上 fltmc help 與實際輸出為準。全文不是站長實機跑出來的輸出,也不會出現任何「我實測跑出幾秒」這類宣稱;你在自己機器上看到的清單內容會因安裝的軟體而異,判讀方法才是本文要給的東西。


🔍 為什麼你需要這個?

先講一個很常見的場景:複製一批小檔案慢到懷疑人生、存檔時 Word 卡住三秒、剛編譯出來的 EXE 一放到桌面就消失、或是明明關掉所有程式,某個資料夾還是刪不掉。這種時候網路上最常見的回答是「應該是防毒太兇」——但接著就沒有下文了,沒人告訴你怎麼證明是哪一支、以及它掛在系統的哪一層。

問題在於,現代 Windows 上「會碰你檔案」的軟體遠不只防毒:備份與連續複寫軟體、雲端同步(OneDrive、Google 雲端硬碟這類)、容器與應用程式虛擬化、磁碟加密、企業資料外洩防護,全部都在同一條檔案 I/O 路徑上排隊。它們不會在工作管理員裡顯示成「正在攔截你的檔案」,因為它們幹活的地方在核心模式,是一支註冊給檔案系統過濾管理員的驅動。

好消息是,Windows 早就內建了一支查詢工具。接下來四個步驟,會把「列出來 → 判讀它是哪一類 → 看它掛在哪顆磁碟 → 跟症狀對起來」走一遍,而且前三步完全是唯讀操作,不會動到你的系統。


🛠️ 實戰步驟

⚠️ 高風險操作警語:本節步驟一到步驟三是唯讀查詢,安全;步驟四之後提到的 fltmc detach 與 fltmc unload 屬於會改變系統防護狀態的操作——卸離或卸載防毒、備份、加密類的 minifilter,等同於在那段期間關掉該軟體的即時保護或同步保護,可能造成資料不一致。動手之前先做好備份,並確認你有能力把它裝回去。

停止條件清單(符合任一,請只做查詢、不要往下做變更):①你不確定自己的 Windows 版本或機器型號 ②手上沒有可用備份 ③已啟用 BitLocker 但手邊沒有修復金鑰 ④這是公司或學校管控的設備,而你沒有 IT 授權(這種情況請直接把查到的清單交給 IT,自行卸載管控軟體的過濾驅動屬於繞過管控,本站不提供做法)⑤指令輸出與本文描述明顯不符。

步驟一:把所有 Minifilter 列出來

先開一個以系統管理員身分執行的命令提示字元或 Windows Terminal,然後跑這一行:

fltmc filters

這是整篇文章最重要的一行指令。它會把目前已載入的所有 minifilter 列成一張表,每一列包含驅動名稱、執行個體數量、altitude 與 frame(欄位標題依 fltmc 內建輸出為準,官方文件未逐欄定義)。

💡 為什麼要這樣做? Fltmc.exe 是微軟隨 Windows 附的系統工具,官方定位是「minifilter 驅動的常見管理操作」:載入與卸載 minifilter、把 minifilter 從磁碟區卸離或附加、以及列舉 minifilter、執行個體與磁碟區。也就是說,這份清單不是某個第三方工具的猜測,而是檔案系統過濾管理員自己吐出來的權威名單。

比較有用的讀法是:執行個體數量就等於它掛上去的位置數——官方對「執行個體」的定義是「minifilter 以某個 altitude 附掛在某顆磁碟區上」,所以這個數字越小,代表它管的範圍越窄;而 Altitude 這個數字,才是判斷它在做什麼的關鍵——下一步就是拆它。

廣告

步驟二:用 Altitude 反查它到底在做什麼

這一步是多數中文教學會跳過、但真正值錢的地方。

先講結論:altitude 不是隨便編的序號,而是微軟配發、有明確語意分段的位置編號。官方定義是「一個無限精度的字串,以十進位數字解讀」,數值低的驅動載入在 I/O 堆疊的下層(靠近檔案系統),數值高的在上層(靠近應用程式)。而且每一種載入順序群組(load order group)都有固定的 altitude 區間——換句話說,你只要看數字落在哪一段,大致就知道這支驅動宣稱自己是幹哪一行的(下表為節錄,完整群組清單一律以官方頁面為準)。

以下是官方載入順序群組與 altitude 區間的節錄(完整表格見文末第一級來源):

Altitude 區間載入順序群組這一段在做什麼
420000–429999Filter最後載入、離檔案系統最遠的舊式群組
400000–409999FSFilter Top必須掛在所有 FSFilter 類型之上者
360000–389999FSFilter Activity Monitor觀察並回報檔案 I/O(監控類)
320000–329999FSFilter Anti-Virus防毒:在檔案 I/O 期間偵測與清除病毒
300000–309999FSFilter Replication把檔案資料複寫到遠端伺服器
280000–289999FSFilter Continuous Backup連續備份:把檔案資料複寫到備份媒體
140000–149999FSFilter Encryption在檔案 I/O 期間加解密
20000 以下FSFilter Infrastructure系統保留,最先載入、最貼近檔案系統

表格重點摘要:

  1. 看到 32 開頭的六位數,幾乎可以直接判定是防毒類——例如官方清單登記給微軟的 WdFilter.sys,altitude 就是 328010;ESET 的 eamonm.sys 是 328700、McAfee 的 mfehidk.sys 是 321300、官方清單登記公司名為 Alwil 的 aswmonflt.sys 是 320700。
  2. 36 到 38 萬那段是「活動監控」,不做攔阻只做觀察與回報,例如微軟 FileInfo.sys(新版)的 360500.5、Sophos SophosED.sys 的 389220。
  3. 40 萬以上是站在最上層的角色,例如微軟雲端檔案的 cldflt.sys(409500)、容器繫結掛載的 bindflt.sys(409800)、備份廠商 Veeam 的 VeeamFCT.sys(404920)。
  4. 同一家廠商的同一支驅動檔名可能出現在兩個區間——SophosED.sys 同時登記了 389220(活動監控)與 324050(防毒)。官方對此的說法是:同一支驅動有多個 altitude 的情況「很少被允許,而且總有更好的解法」,官方並未說明個別產品這樣登記的理由,合理的解讀是該產品在兩層各有一個角色。
  5. 每個廠商的第一個 altitude 必須由微軟配發;拿到整數 altitude 之後,廠商可以在同一個群組內自行加上小數(例如 325000.3、325000.7)來安置新的驅動——這就是為什麼你會看到帶小數點的 altitude。
看 Altitude 前幾碼就能判斷 Minifilter 屬於哪一類:32 萬防毒、36 至 38 萬活動監控、28 萬連續備份、14 萬加解密

要查具體檔名對應哪一家廠商,微軟另外維護了一份「已配發 altitude」清單,依載入順序群組列出驅動檔名、altitude 與公司名稱。但請注意官方自己標註的限制:這份清單一年只更新一到兩次,所以查不到你機器上那支驅動,很可能只是它比較新,不能直接推論成「來路不明」。

步驟三:看它到底掛在哪一顆磁碟

知道有誰之後,下一個問題是它掛在哪裡。兩行指令:

廣告
fltmc instances
fltmc volumes

fltmc instances 列的是「執行個體」——也就是某一支 minifilter 在某一顆磁碟區上的實際附掛,欄位包含 Filter、Volume Name、Altitude、Instance Name、Frame 等資訊(欄位標題同樣以 fltmc 內建輸出為準)。同一支驅動在 C 槽掛著、在你外接的 USB 磁碟沒掛,是很常見的狀況,而這正是「為什麼同一個檔案放桌面會被掃、放外接硬碟不會」的直接解釋。fltmc volumes 則是列出過濾管理員看得到的磁碟區清單;要知道某一顆磁碟上掛了哪些過濾驅動,還是得回頭看 fltmc instances。

想把驅動名稱對回「這是哪個軟體」,可以用服務查詢繞回去:

sc query WdFilter

把 WdFilter 換成你在清單裡看到的 Filter Name 即可。minifilter 本質上就是以服務形式註冊的核心模式驅動,官方文件也明載它可以「透過服務啟動要求(sc start、net start 或服務 API)」被載入,所以服務查詢查得到它的狀態。

如果症狀是「某個檔案就是刪不掉、換不掉」,那多半不是 minifilter 的問題,而是有程序還開著控制代碼,這種情況請改用 Process Explorer 找出鎖定檔案的程序與可疑 DLL,兩個工具查的是不同層的東西。

步驟四:驗證結果——把嫌疑犯和症狀對起來

到這裡你手上有三份資料:誰載入了、它屬於哪一類、掛在哪顆磁碟。最後一步是驗證因果,而不是憑印象定罪。

  • 症狀是「慢」:用 Process Monitor 側錄實際的檔案 I/O,看是哪一類操作被拉長、以及呼叫堆疊裡有沒有那支驅動。做法可參考 ProcMon 的五個篩選技巧與 Boot Logging 實戰。
  • 症狀是「存取被拒 / 檔案被改寫」:先看那支驅動所屬的群組——32 萬區間的防毒類本來就會攔阻並清除,26 萬區間的內容篩選器(Content Screener)本來就會阻止特定檔案建立,這是它們的設計行為,不是故障。
  • 症狀是藍屏:那就不是 fltmc 能收尾的範圍了,要進傾印分析。過濾驅動彼此搶同一個 I/O 封包時,很容易演變成 MULTIPLE_IRP_COMPLETE_REQUESTS(0x44)這類重複完成 IRP 的藍屏。

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

fltmc 查的其實是 FltMgr.sys 這支驅動的內部狀態,它就是 Windows 的「檔案系統過濾管理員」。

廣告

官方對它的定義是:FltMgr 是系統隨附的核心模式驅動,實作並公開檔案系統過濾驅動常用的功能;開發者可以靠它寫出比舊式(legacy)檔案系統過濾驅動更簡單的 minifilter。關鍵的一句是——FltMgr 雖然隨 Windows 安裝,但只有在有 minifilter 被載入時才會變成作用中狀態,並附掛到目標磁碟區的檔案系統堆疊上。也就是說,minifilter 不是自己硬插進 I/O 堆疊,而是向 FltMgr 註冊它想過濾的 I/O 操作,由 FltMgr 代為排隊。

排隊順序就是 altitude 的用途。官方把它講得很清楚:minifilter 可以為它想過濾的每一種 I/O 操作註冊前置作業回呼(preoperation callback)、後置作業回呼(postoperation callback),或兩者都註冊。當 FltMgr 收到一個 I/O 操作時:

  • 去程:依 altitude 由高到低依序呼叫各 minifilter 的前置回呼,然後把 I/O 要求往下一層驅動送。
  • 回程:當 I/O 要求完成回來時,依 altitude 由低到高反向呼叫各 minifilter 的後置回呼。

這個「去程由上而下、回程由下而上」的三明治結構,解釋了兩件實務上很煩的事:第一,一次檔案存取會被每一支有興趣的 minifilter 最多各摸兩次(前置與後置回呼可以只註冊其中一種),裝越多這類軟體,單次 I/O 的累積成本越高;第二,altitude 高的那支看到的是「還沒被下層加工過」的請求,而 altitude 低的那支看到的是已經被上層改過的版本——所以加密類(14 萬區間)必須掛在防毒(32 萬區間)底下,防毒才掃得到解密後的內容。

另外一個常讓人困惑的概念是 Frame(框架)。為了跟舊式過濾驅動相容,FltMgr 可以在檔案系統 I/O 堆疊的多個位置附掛過濾裝置物件,每一個這樣的物件就叫一個 frame;從舊式過濾驅動的角度看,每個 frame 就只是「另一支舊式過濾驅動」。每個 frame 代表一段 altitude 範圍,FltMgr 會視需要調整既有 frame 或建立新的 frame,好讓 minifilter 掛在正確位置。實務上的限制是:如果兩支舊式過濾驅動之間原本沒有 frame,FltMgr 就無法把 minifilter 插進它們中間——結果就是某支 minifilter 可能掛到它「原本想掛的位置」的另一側。所以當你看到清單裡 Frame 欄位不是全部都 0,那台機器上通常就住著舊式過濾驅動——這是從官方說明推出來的判讀方式,不是官方寫死的結論。

最後一個實用細節:minifilter 被卸載後再重新載入時,系統會把它放回原本那個 frame 裡的同一個 altitude。所以「卸載再載入」不會讓它換位置,想改變相對順序得從 altitude 本身下手,而那是廠商 INF 檔的事、不是使用者能調的。


🔙 萬一翻車:回退步驟

如果你在步驟四之後動了 fltmc detach 或 fltmc unload,以下是把系統放回原狀的方法。先講最重要的一句:重新開機幾乎能解決所有狀況,因為開機類型為自動或系統啟動的 minifilter 會依 INF 定義重新載入。

情境一:卸離之後症狀沒有改善

把它掛回去即可。用 fltmc attach 對指定磁碟區重新附掛,或直接重新開機讓系統照原設定還原。官方也明載,明確的附掛要求(fltmc attach)會讓 FltMgr 呼叫該 minifilter 的執行個體設定回呼,等於回到正常流程。

情境二:卸載之後程式異常或防護消失

用服務啟動要求把驅動叫回來,例如 sc start <驅動服務名> 或 net start <驅動服務名>;官方列的載入途徑就是服務啟動要求與明確載入要求(fltmc load)兩種。

這裡有兩個必須知道的官方細節,能省下你很多困惑:

  • fltmc unload 會不顧服務控制管理員(SCM)上註冊的任何相依性,直接把該 minifilter 卸載掉。 這代表它不會像停止服務那樣幫你檢查「還有誰依賴我」,安全類軟體被這樣拔掉,後果自負。
  • 如果一支 minifilter 沒有註冊卸載回呼(FilterUnloadCallback),它根本就不能被卸載。 所以你對防毒的驅動下 fltmc unload 卻失敗,多半不是你指令打錯,而是它本來就被設計成不可卸載(再加上多數防毒產品另有竄改防護機制)。正確做法是用該軟體自己的管理介面暫停保護,而不是硬拔它的驅動。

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

進 Windows 修復環境(WinRE)後選「安全模式」。安全模式只載入最小集合的驅動,多數第三方 minifilter 不會起來(少數有登記安全模式啟動的安全軟體例外),通常足以讓你回到桌面把軟體重新安裝或移除。若連 WinRE 都進不去,請改用官方的 Windows 11 安裝媒體建立工具做修復媒體開機。


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

站長我要先把話說在前面:這篇沒有任何一行是我在自己機器上跑出來的輸出。原因很簡單——fltmc filters 的結果完全取決於那台機器裝了什麼,把某一台的輸出貼上來當「實測」,對讀者沒有任何驗證價值,只會變成假的第一手。本文的可驗證性建立在另一個地方:文內每一個 altitude 數字都能在微軟官方文件裡逐字查到(例如 WdFilter.sys 328010、cldflt.sys 409500、FileInfo.sys 360500.5),而且官方的載入順序群組表在 2025 年 4 月 24 日、過濾管理員概念頁在 2025 年 11 月 7 日都還在維護中。你可以拿本文的表格去對照你自己機器的輸出,那才是真正屬於你的第一手資料。

想再往下一層的話,有三個官方工具值得記:

  1. WinDbg 的 !fltkd 擴充指令:!filters 列出所有已附掛的 minifilter、!frames 列出所有 frame 與其上的 minifilter、!volumes 列出所有磁碟區與執行個體、!cbd 則是過濾管理員版本的 !irp。在 WinDbg 裡輸入 !fltkd.help 可以看完整清單。分析傾印檔時,這組指令能直接看出藍屏當下 I/O 堆疊上站著誰。
  2. Filter Verifier:這是 Driver Verifier 裡的一個選項,專門驗證 minifilter 對過濾管理員函式的使用是否正確,隨過濾管理員一起安裝,用 verifier.exe 啟用「檔案系統過濾驗證」功能。這是給驅動開發者用的,一般使用者請不要在日常機器上開。
  3. fsutil file layout:官方文件示範用它把單一檔案的屬性、時間戳記、資料流等細節整個攤開,配合 minifilter 清單一起看,常能解釋「為什麼這個檔案這麼特別」。

如果你是系統管理員,建議把 fltmc filters 的輸出當成基準線存起來:機器正常時存一份,出問題時再跑一次,兩份一比,新出現的那幾行通常就是嫌疑名單的起點。


❓ 常見問題

Q:執行 fltmc filters 出現拒絕存取,是不是我的系統壞了?

不是。官方文件的寫法是:要在具有系統管理員權限的命令提示字元底下輸入 fltmc help,才看得到完整指令清單;實務上以一般使用者權限執行 fltmc,多半就是會被拒絕。請在開始功能表對終端機按右鍵選「以系統管理員身分執行」後重試。

Q:可以把防毒的 Minifilter 卸掉讓電腦變快嗎?

不建議,而且多半也做不到。官方明載:沒有註冊卸載回呼的 minifilter 無法被卸載,防毒產品通常還另外有竄改防護。更重要的是,32 萬區間的驅動就是檔案 I/O 期間負責偵測病毒的那一支,拔掉它等於在那段時間內關掉即時保護。要排除效能問題,正確做法是用該軟體自己的介面設定排除項目或暫停保護,而不是動它的驅動;公司電腦則一律交給 IT 處理。

Q:清單裡有一支 altitude 查不到對應廠商,是不是中毒了?

不一定。微軟那份已配發 altitude 清單,官方自己註明一年只更新一到兩次,新近配發的 altitude 很可能還沒被收進去。比較可靠的判斷順序是:先用 sc query 對回服務名稱與驅動檔案路徑,再檢查該檔案的數位簽章與發行者,最後才考慮是不是要送檢。光憑「清單查不到」下結論,誤判機率很高。

Q:fltmc 在舊版 Windows 上也能用嗎?

Fltmc.exe 屬 Windows 隨附工具,官方文件並未逐版本界定適用範圍,現行 Windows 版本上都找得到它。真正會隨版本變動的不是指令本身,而是清單內容——微軟自家的 minifilter 會隨版本增減(例如容器與雲端檔案相關的那幾支是後來才加入的),所以跨版本比較清單時,請以各自版本的官方文件為準。


🔗 延伸閱讀


📎 參考資料來源

📖 第一級|廠商官方:

⚠️ 本文核心事實以第一級為準;指令輸出欄位屬工具內建說明範疇,非上述官方頁面所載,已於文中標明。

📅 本文查證戳記:2026-09-18 依據 Microsoft Learn 官方文件撰寫,適用 Windows 11 / Windows 10 內建的 fltmc.exe。

若你在後續版本遇到指令輸出欄位變動,歡迎在留言區回報,站長會更新文章。


廣告