# 怎麼在 Mac 上解除安裝防毒軟體又不弄壞網路

> 資安軟體會註冊一個系統延伸功能、一個網路過濾器、幾個 launch daemon，有時候還有一份描述檔，所以把它拖進垃圾桶，過濾器照樣開著；各家廠商的移除做法，以及怎麼驗證真的什麼都沒剩。

Published: 2026-08-15 | Updated: 2026-08-22

一款防毒產品不是一個 App。除了 App 套件，macOS 那一側還替它保管著一組登記，一個系統延伸功能、一份存起來的網路過濾器設定、一到多個 launchd 工作，通常還有一個特權輔助程式，受管理的 Mac 上再加一份設定描述檔。把套件拖進垃圾桶，移掉的只是前端，每一筆登記都原封不動留著，這就是這類軟體以「移不掉」聞名的原因，也是為什麼第一步該找原廠自己的解除安裝程式，不是 Finder。

## 一款資安產品在 App 套件之外裝了什麼

這一整片安裝面在任何一台 Mac 上都盤點得出來，全部唯讀，大概一分鐘：

```
systemextensionsctl list
ls -la /Library/LaunchDaemons /Library/LaunchAgents ~/Library/LaunchAgents
ls -la /Library/PrivilegedHelperTools
profiles list
pkgutil --pkgs | grep -i vendorname
```

**系統延伸功能**裝的是檢查檔案和流量的那段程式碼，取代了這類軟體以前用的核心延伸功能，所以那些叫你去刪 `.kext` 的舊建議，現在已經指不到任何東西。Apple 的[系統延伸功能指南](https://developer.apple.com/documentation/systemextensions/installing-system-extensions-and-drivers)寫了它住在哪，「系統延伸功能位於 App 的 `Contents/Library/SystemExtensions` 資料夾內。」啟用它要你點頭，所以裝資安軟體永遠會跑一趟系統設定。Apple 的[部署技術文件](https://developer.apple.com/documentation/technotes/tn3134-network-extension-provider-deployment)還補了移除時最關鍵的一條，以這種方式封裝的提供者「在全域環境中執行，與登入的使用者完全無關」。

**網路內容過濾器或透明代理**是另一個獨立的東西，移除之後上不了網，多半就是它。把它打開的那份設定屬於系統，不屬於 App。[NEFilterManager](https://developer.apple.com/documentation/networkextension/nefiltermanager) 講得很明白：「過濾器設定儲存在 Network Extension 偏好設定中，由 Network Extension 框架管理」，而且只有所屬 App 明確儲存，改動才會生效。

**launchd 工作**負責把背景那幾塊拉起來。`/Library/LaunchDaemons` 在開機時以 root 身分執行，早於任何人登入；`/Library/LaunchAgents` 在每個使用者登入時執行；`~/Library/LaunchAgents` 只為你這個使用者執行。這些資料夾裡的 plist 是一筆對 launchd 的登記，不是普通的設定檔。

`/Library/PrivilegedHelperTools` 底下的**特權輔助程式**是一個 root 擁有的可執行檔，配著一個常駐程式，搬檔案之前要先把那個常駐程式從 launchd 卸下來。公司或學校部署的 Mac 上，**設定描述檔**帶著延伸功能的核准和過濾器的內容，軟體不必問任何人就裝得起來，同一套機制也能把它再裝回去。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/antivirus-install-surface.webp" width="1360" height="454" loading="lazy" alt="一個防毒安裝程式往外散成好幾樣：應用程式資料夾裡的 App 套件、套件裡的系統延伸功能、存在 Network Extension 偏好設定裡的網路過濾器設定、向 launchd 登記的 daemon 與 agent、一個特權輔助程式，以及一份設定描述檔">
  <figcaption>這裡面只有第一樣是你拖得動的檔案，其餘都是 macOS 保管的登記，各有各的所有者，也各有各的移除路徑。</figcaption>
</figure>

## 為什麼拖進垃圾桶不可能有用

Apple 的文件裡有一個好消息，只是比乍看之下窄，「當使用者刪除對應的 App 時，系統會自動解除安裝任何系統延伸功能。」這句話管的只有套件裡的那個延伸功能，其他登記一個字都沒提，而那些登記沒有一個住在套件裡。

這裡最常見的抱怨，背後都是那份過濾器設定。它在 Network Extension 偏好設定裡有自己的生命週期，Apple 文件也寫明了，移除它要靠所屬 App 發出一次明確呼叫，而刪掉 App 從來不會發出那一次。剩下的就是一個還開著的過濾器，指向一個已經不存在的提供者，症狀就是大家移除到一半之後回報的那些，DNS 查不到、瀏覽器每一頁都卡住、連線逾時而 Wi-Fi 圖示滿格。網路本身是好的，是流量被交給了一個答不出話的過濾器。

launchd 工作是第二種故障。刪掉一個可執行檔，不會把啟動它的那筆工作登記取消，只會讓一個原本跑得動的服務變成每次啟動都失敗，而設定成要保持存活的工作會被一輪一輪重試，「解除安裝完風扇反而狂轉」的回報就是這麼來的。反過來也一樣，工作還載入著就先刪 plist，launchd 會把那筆工作一路留到下次重新開機，磁碟上卻什麼都不剩。輔助程式和描述檔活下來的道理相同，而一份帶著軟體內容的描述檔，還會把你剛刪掉的東西再裝一次。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/antivirus-half-removal.webp" width="1360" height="454" loading="lazy" alt="App 套件被移進垃圾桶，而網路過濾器設定、已載入的 launch daemon、特權輔助程式和設定描述檔全都活了下來，造成 DNS 失敗、反覆重新啟動的迴圈，以及被重新裝回來的軟體">
  <figcaption>資安產品移除到一半的症狀，追下去都是同一件事，某一筆登記活得比你刪掉的檔案久。</figcaption>
</figure>

## 這種麻煩是設計出來的

資安軟體如果任何行程都能靜默解除安裝，那它就沒有價值，因為有本事的惡意軟體第一件事就是把盯著自己的東西移掉。所以 macOS 把生命週期的兩端都放在背景行程搆不到的地方，啟用要有人在系統設定裡按下「允許」（Apple 的[提示說明頁](https://support.apple.com/en-us/120363)在 macOS 15 以後指向「登入項目與延伸功能」，更早的版本是「隱私權與安全性」），停用則要由擁有這個延伸功能的 App 自己發出請求。你感覺到的這份阻力就是那個設計在運作，並不存在一串藏起來的 `rm` 指令，能代表所謂真正的解除安裝。

## 規則：先跑原廠的解除安裝程式

永遠先跑它，碰其他東西之前就跑。延伸功能的停用請求只有承載它的那個 App 送得出去，過濾器設定只有當初存下它的那個 App 能從 Network Extension 偏好設定裡移除，而哪些元件停錯順序就會把別的元件裝回來，也只有原廠工具知道。第三方解除安裝工具拿不到那些控制權，所以殘留掃描器，包括 [Mole](https://mole.fit/)，管的是原廠工具跑完之後剩下的東西，永遠不是它的替代品。

如果你已經把 App 拖進垃圾桶了，用**檔案 › 放回原處**把它放回去，打開它，用它自己的解除安裝程式。下面各節寫了每家廠商把那個程式放在哪。

## 各家廠商的解除安裝程式在哪

下面每個連結都指向廠商自己的支援網站，最新的步驟在那裡。支援頁面會搬家，兩邊對不上就以那一頁為準，不要照這裡的摘要做。

### McAfee

解除安裝程式已經在這台 Mac 上，就在應用程式資料夾裡，名字跟著你買的產品走，所以 Total Protection 和 LiveSafe 用的不是同一個。McAfee 的[說明](https://www.mcafee.com/support/s/article/000002432?language=en_US)要你以管理者身分登入、關掉每一個 McAfee 的 App，再從**前往 › 應用程式**進去，按兩下那個解除安裝程式。裡面有兩步要照著做，不要自己發揮，macOS 跳出系統延伸功能的提示時要按「允許」，還有最後那個重新開機是編了號的步驟，不是建議。Dock 上可能留下一個已經失效的圖示，得自己拖掉。

### Norton

同樣是一個已經在應用程式資料夾裡的獨立解除安裝 App。Norton 的[解除安裝頁](https://support.norton.com/sp/en/us/home/current/solutions/v134746139)走的是**前往 › 應用程式**，按兩下 **Norton Uninstaller**，接著「輸入管理者帳號密碼，然後按 **Install Helper**」，再輸入一次密碼，最後按 **Finish**。那個安裝輔助程式的步驟，就是解除安裝程式取得權限、去拆自家系統層元件的方式。

### Avast

解除安裝功能在 App 裡，它那一頁開頭就先把最明顯的另一條路否掉：「把 Avast Security 移到垃圾桶或使用 Clean My Mac，並不會完整解除安裝這個應用程式。」[文件寫的路徑](https://support.avast.com/en-us/article/uninstall-mac-security/)是選單列上的 **Avast Security › Uninstall Avast Security**，按 **Continue**，然後輸入 Mac 的開機密碼並按 **Install Helper**。同一個解除安裝程式也以 **Avast Security Uninstaller** 的名字放在**應用程式**資料夾裡，給 App 打不開的時候用。

### Bitdefender

用的是一支專門的解除安裝執行檔，不是把 App 拖走。[解除安裝頁](https://www.bitdefender.com/consumer/support/answer/1784/)要你打開 Bitdefender 資料夾，按兩下 **Bitdefender Uninstaller**，勾選產品，按 **Uninstall**，再輸入管理者的名稱和密碼。同一輪還會問要不要一併移除 Bitdefender VPN，沒打算留就接受，因為那個元件自己也註冊了一個網路延伸功能。

### Malwarebytes

是 App 裡的一個選單項目。[解除安裝說明](https://help.malwarebytes.com/hc/en-us/articles/31589300070683-Uninstall-Malwarebytes-for-Windows-and-Mac)帶你走選單列的 **Help › Uninstall Malwarebytes**、一個確認提示，然後是 Mac 的密碼。這一類軟體裡少見的是，同一頁也接受直接用 Finder 移除，等於廠商自己承認，它佔的面積就這麼大。舊的 `support.malwarebytes.com` 解除安裝文章現在會轉向，請用 `help.malwarebytes.com` 那一頁。

### Sophos

兩款產品，兩個答案。消費者版的 **Sophos Home** 用的是一個獨立的 **Remove Sophos Home**，從 Spotlight 啟動。那[一頁](https://support.home.sophos.com/hc/en-us/articles/115005499786-Uninstalling-Sophos-Home-on-Mac-computers)對另一條路講得很直：「請勿把 Sophos Home 拖進垃圾桶，那樣不會解除安裝這個程式。」它會裝一個輔助程式、要你的密碼，還需要重新開機。同一頁另外有一節選用步驟，講事後怎麼移除 Sophos 的系統延伸功能，而那套流程把 `systemextensionsctl uninstall` 夾在關閉和重新開啟系統完整性保護之間。這一段把界線講得最清楚，就連原廠自己的解除安裝程式，也不一定會把自家的延伸功能一起帶走。那幾步是選用的，廠商自己就這麼標，而系統完整性保護值得一直開著。

受管理的 **Sophos Endpoint** 用的是 Launchpad 裡的 **Remove Sophos Endpoint**，但[文件](https://docs.sophos.com/esg/endpoint/help/en-us/help/Uninstall/)加了一道門：「若已開啟防竄改保護，必須先關閉才能解除安裝 Sophos Endpoint。」那要 Sophos Central 的管理者，或者那個主控台裡保管的逐台裝置密碼，所以公司的 Mac 上，這件事使用者這一側做不了。

### Kaspersky

在 App 裡，走支援面板。[解除安裝頁](https://support.kaspersky.com/us/kaspersky-for-mac/25/118671)帶你走 **Help › Support**、**Uninstall**、再一次 **Uninstall**，然後是管理者憑證，並提醒 Chrome 和 Firefox 的擴充功能不會跟著 App 一起走。Kaspersky 另外發布了一支獨立的[移除工具](https://support.kaspersky.com/16048) `kavremover-mac`，給 App 內那條路走不通的時候用。兩頁的日期都是 2024 年，請對照你手上的版本確認。

## 如果這台 Mac 受管理，答案在 IT 那裡

在這件事上耗掉一整晚之前，先確認這個決定到底輪不輪得到你：

```
profiles status -type enrollment
profiles list
```

第一條不需要管理者權限就印得出 DEP 和 MDM 的註冊狀態，第二條列出為你這個使用者安裝的設定描述檔，同樣的資訊也出現在**系統設定 › 一般 › 裝置管理**底下。Apple 的[裝置管理說明](https://support.apple.com/guide/mac-help/mh35474/mac)把後果寫得很清楚：「有些描述檔只能由 Mac 的系統管理者移除。如果你無法移除描述檔，你的 Mac 可能是受管理的電腦。」

受管理的 Mac 上，資安軟體是管理派下來的內容之一。你在本機移除它，描述檔會把它裝回來；你想在本機關掉防竄改保護，關不掉，因為密碼在一個你沒有的主控台裡。去請 IT 把它取消指派。

## 驗證真的移乾淨了

移除到一半的狀況，在這裡逮到還算便宜。等原廠的解除安裝程式跑完、Mac 也重新開機之後再做，因為底下有幾項檢查要重開機之後才說實話。

**1. 系統延伸功能。**

```
systemextensionsctl list
```

什麼都沒裝的 Mac 上，輸出只有一行 `0 extension(s)`。否則每一列會列出 team identifier、延伸功能的 bundle identifier、版本，以及括號裡的狀態。任何一列還帶著你剛移除那家廠商的識別碼，就代表停用沒有完成。這個工具確實提供 `systemextensionsctl uninstall <teamID> <bundleID>`，也有廠商把這種情況寫進了自己的文件，但只有廠商那一頁叫你這樣做，才動它。

**2. launchd 登記。** 到那三個位置找廠商的標籤，再去問 launchd 實際載入了什麼：

```
ls -la /Library/LaunchDaemons /Library/LaunchAgents ~/Library/LaunchAgents
launchctl list | grep -i vendorname
sudo launchctl list | grep -i vendorname
```

兩次 `launchctl list` 回答的是不同問題，第一次看的是你這個登入工作階段，第二次看的是 root 常駐程式所在的系統範圍。有 plist 卻沒有對應的已載入工作，那份 plist 是過期殘留；有已載入的工作卻沒有 plist，那台 Mac 需要重新開機；兩邊都有，就是軟體還在跑。Mole 把這三個位置合成一份清單顯示，那是下一節的事。

**3. 網路過濾器。** 註冊過的內容過濾器會在**系統設定 › 網路**裡以「過濾器」項目出現，沒有這個項目就代表沒有東西註冊。App 都不在了它還列在那裡，弄壞連線的就是它。

**4. 登入項目與延伸功能。** 打開**系統設定 › 一般 › 登入項目與延伸功能**，上面的登入清單和下面的背景項目都要讀。廠商的元件很常在這裡活得比 App 久。

**5. 執行中的行程。** 在「活動監視器」裡搜尋廠商名稱，並從**顯示方式**選單切到「所有程序」，這樣 root 擁有的常駐程式才會被算進來。重新開機之後結果是空的，就是你要的那個確認。

**6. 安裝收據。** `pkgutil --pkgs | grep -i vendorname` 會列出安裝程式寫過什麼，等活著的元件都清掉之後，這份清單會告訴你 `~/Library/Application Support` 底下有哪些路徑值得逐項過目。

前三項檢查都乾淨，這款產品就已經離開這台機器了，剩下的都只是磁碟空間，不是行為。

## Mole 在這裡做什麼，又拒絕做什麼

<figure class="blog-diagram">
  <img src="https://mole.fit/img/en/uninstall.webp" width="2584" height="1741" loading="lazy" alt="解除安裝的審核畫面，其中一款 App 展開後顯示它的套件，以及 ~/Library/Application Support 和 ~/Library/HTTPStorages 裡的殘留項目，每一項都帶大小和勾選框，底部是移除按鈕">
  <figcaption>一次解除安裝會動到的每一項，在任何東西移動之前都連路徑和大小一起列出來。信心不足的列預設不勾，所以預設動作永遠是比較小的那個。</figcaption>
</figure>

[Mole](https://mole.fit/) 的 Software 分頁把已裝 App 和開機啟動項目放在同一個畫面，所以一款產品註冊的 launch agent、launch daemon 和登入項目，就排在註冊它們的那個 App 旁邊，每一項都帶真實路徑。

殘留這一塊，Mole 比對的是 bundle 身分而不是名稱，它認得的系統層路徑就是上面那些：`/Library/LaunchDaemons/<bundle-id>.plist`、`/Library/LaunchAgents/<bundle-id>.plist`、`/Library/PrivilegedHelperTools/<bundle-id>`，以及 `/private/var/db/receipts` 底下的安裝收據。系統層的每一個命中都只供審核，也就是預設不勾，路徑由你讀過之後一條一條加進來，不是從一份先打好勾的清單裡往外挑。刪除走垃圾桶，弄錯了是從垃圾桶拖回來，略過和失敗的項目都會回報，全部在本機執行。

有兩件「不做」比上面所有事情都重要。Mole 會掃 `/Library/SystemExtensions`，看正在移除的那個 App 有沒有自己的延伸功能，找到就跳一則提示點名它，並說明 App 消失之後它可能還留著。停用這件事 Mole 不去嘗試，因為做不到，那個請求必須由所屬 App 發出。另外有一批廠商的產品被鎖住、受管理，或者拆著移除就會出事，ESET、CrowdStrike、SentinelOne、Jamf、Palo Alto GlobalProtect 和 Cisco Secure Client 都在裡面，這些 Mole 根本不接，直接指向廠商官方的解除安裝程式。

這條邊界說得毫不含糊，這一頁其餘的內容才值得信：Mole 不處理惡意軟體，不是備份，遇到帶驅動程式、VPN 元件或系統延伸功能的軟體也取代不了原廠的解除安裝程式。防毒軟體這一類，Mole 的工作要等原廠解除安裝程式跑完之後才開始。終端機裡，免費開源的 [Mole CLI](https://github.com/tw93/Mole) 用 `mo uninstall` 做同一份審核，每個具破壞性的指令都吃 `--dry-run`，讓你先把路徑清單讀過一遍。

## 常見問題

### 刪掉防毒軟體之後就上不了網了，該怎麼辦？

幾乎可以確定是那份網路過濾器設定活得比 App 久。它住在 Network Extension 偏好設定裡，由框架獨立於套件管理，所以刪掉 App 只會留下一個還開著的過濾器，指向一個已經不在的提供者。到**系統設定 › 網路**看有沒有「過濾器」項目，再用 `systemextensionsctl list` 看有沒有活下來的延伸功能。修法是把廠商的產品裝回來，然後跑它自己的解除安裝程式。把正想移除的軟體重新裝一次，感覺很不對，但那確實是最短的一條路。

### 我可以直接刪掉 /Library/LaunchDaemons 裡的 plist 嗎？

不能當第一步，也很少該當最後一步。那裡的 plist 是一筆對 launchd 的登記，工作還載入著就把檔案刪掉，那筆工作會一路跑到下次重新開機，而磁碟上沒有任何東西解釋得了它。等原廠的解除安裝程式跑完、Mac 重新開機、`sudo launchctl list` 也看不到對應的已載入工作，留下來的那份 plist 才是沒有作用的殘留。軟體還裝著，它的 plist 就永遠不要動。

### 原廠的解除安裝程式要了密碼卻失敗，接下來呢？

檢查三件事。這台 Mac 是不是受管理的，如果是，擋住移除的是防竄改保護或描述檔，答案在 IT 那裡。產品是不是還在跑，有些解除安裝程式在自家常駐程式還開著檔案時跑不完，重新開機再試一次。還有解除安裝程式是不是最新的，有些廠商另外發布一支獨立的移除工具，跟 App 內那條路不是同一個。三件都沒問題，下一站是廠商的技術支援。

### 檢查它走了沒有之前，需要先重新開機嗎？

需要。延伸功能拆除和 launchd 取消登記都要跨過一次開機才算完成，所以解除安裝程式一跑完就檢查，可能看到一堆其實已經排定要消失的殘留，也可能反過來漏掉一個等一下還會回來的常駐程式。

## 延伸閱讀

- [如何徹底解除安裝 Mac 上的 App](https://mole.fit/tw/blog/how-to-completely-uninstall-apps-on-mac)，講一般的流程、bundle identifier 和共用容器。
- [解除安裝 Mac App 之後的殘留怎麼清](https://mole.fit/tw/blog/how-to-remove-leftover-files-after-uninstalling-mac-apps)，講活著的元件都確認清乾淨之後剩下的東西。
- [Mac 清理工具絕不該刪的東西](https://mole.fit/tw/blog/what-mac-cleaners-should-never-delete)，講同一個判斷的另一面。

---

Canonical HTML page: https://mole.fit/tw/blog/how-to-uninstall-antivirus-mac
Blog index for agents: https://mole.fit/tw/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
