⚡ 站長快讀:核心重點
- 文章屬性:教學實戰
- 適用系統: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–429999 | Filter | 最後載入、離檔案系統最遠的舊式群組 |
| 400000–409999 | FSFilter Top | 必須掛在所有 FSFilter 類型之上者 |
| 360000–389999 | FSFilter Activity Monitor | 觀察並回報檔案 I/O(監控類) |
| 320000–329999 | FSFilter Anti-Virus | 防毒:在檔案 I/O 期間偵測與清除病毒 |
| 300000–309999 | FSFilter Replication | 把檔案資料複寫到遠端伺服器 |
| 280000–289999 | FSFilter Continuous Backup | 連續備份:把檔案資料複寫到備份媒體 |
| 140000–149999 | FSFilter Encryption | 在檔案 I/O 期間加解密 |
| 20000 以下 | FSFilter Infrastructure | 系統保留,最先載入、最貼近檔案系統 |
表格重點摘要:
- 看到 32 開頭的六位數,幾乎可以直接判定是防毒類——例如官方清單登記給微軟的
WdFilter.sys,altitude 就是 328010;ESET 的eamonm.sys是 328700、McAfee 的mfehidk.sys是 321300、官方清單登記公司名為 Alwil 的aswmonflt.sys是 320700。 - 36 到 38 萬那段是「活動監控」,不做攔阻只做觀察與回報,例如微軟
FileInfo.sys(新版)的 360500.5、SophosSophosED.sys的 389220。 - 40 萬以上是站在最上層的角色,例如微軟雲端檔案的
cldflt.sys(409500)、容器繫結掛載的bindflt.sys(409800)、備份廠商 Veeam 的VeeamFCT.sys(404920)。 - 同一家廠商的同一支驅動檔名可能出現在兩個區間——
SophosED.sys同時登記了 389220(活動監控)與 324050(防毒)。官方對此的說法是:同一支驅動有多個 altitude 的情況「很少被允許,而且總有更好的解法」,官方並未說明個別產品這樣登記的理由,合理的解讀是該產品在兩層各有一個角色。 - 每個廠商的第一個 altitude 必須由微軟配發;拿到整數 altitude 之後,廠商可以在同一個群組內自行加上小數(例如 325000.3、325000.7)來安置新的驅動——這就是為什麼你會看到帶小數點的 altitude。

要查具體檔名對應哪一家廠商,微軟另外維護了一份「已配發 altitude」清單,依載入順序群組列出驅動檔名、altitude 與公司名稱。但請注意官方自己標註的限制:這份清單一年只更新一到兩次,所以查不到你機器上那支驅動,很可能只是它比較新,不能直接推論成「來路不明」。
步驟三:看它到底掛在哪一顆磁碟
知道有誰之後,下一個問題是它掛在哪裡。兩行指令:
fltmc instancesfltmc volumesfltmc 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 日都還在維護中。你可以拿本文的表格去對照你自己機器的輸出,那才是真正屬於你的第一手資料。
想再往下一層的話,有三個官方工具值得記:
- WinDbg 的
!fltkd擴充指令:!filters列出所有已附掛的 minifilter、!frames列出所有 frame 與其上的 minifilter、!volumes列出所有磁碟區與執行個體、!cbd則是過濾管理員版本的!irp。在 WinDbg 裡輸入!fltkd.help可以看完整清單。分析傾印檔時,這組指令能直接看出藍屏當下 I/O 堆疊上站著誰。 - Filter Verifier:這是 Driver Verifier 裡的一個選項,專門驗證 minifilter 對過濾管理員函式的使用是否正確,隨過濾管理員一起安裝,用
verifier.exe啟用「檔案系統過濾驗證」功能。這是給驅動開發者用的,一般使用者請不要在日常機器上開。 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 會隨版本增減(例如容器與雲端檔案相關的那幾支是後來才加入的),所以跨版本比較清單時,請以各自版本的官方文件為準。
🔗 延伸閱讀
- ETW 事件追蹤是什麼?用 Windows Performance Recorder(WPR)抓效能問題完整教學
- NotMyFault 教學:故意觸發 BSOD,驗證你的記憶體傾印設定真的有效
- BSOD 跳 PAGE_FAULT_IN_NONPAGED_AREA(0x50)?別急著換 RAM,站長用 WinDbg 拆四個 Parameter 找真兇
- 檔案總管一直閃退或重啟?Explorer.exe 當機完整排查方法
📎 參考資料來源
📖 第一級|廠商官方:
- Filter Manager Concepts(過濾管理員概念) — 2026-09-18 查證(官方頁面標示最後更新日 2025-11-07)
- Load order groups and altitudes for minifilter drivers(載入順序群組與 altitude) — 2026-09-18 查證(官方頁面標示最後更新日 2025-04-24)
- Allocated altitudes(已配發 altitude 清單) — 2026-09-18 查證
- Tools for minifilter development and testing(Fltmc.exe 與 !fltkd) — 2026-09-18 查證
- Loading and Unloading a Minifilter(載入與卸載) — 2026-09-18 查證
⚠️ 本文核心事實以第一級為準;指令輸出欄位屬工具內建說明範疇,非上述官方頁面所載,已於文中標明。
📅 本文查證戳記:2026-09-18 依據 Microsoft Learn 官方文件撰寫,適用 Windows 11 / Windows 10 內建的
fltmc.exe。若你在後續版本遇到指令輸出欄位變動,歡迎在留言區回報,站長會更新文章。
