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

> 資安軟體可能包含系統延伸功能、網路過濾器、背景工作和管理設定，拖走 App 未必能完整移除。依原廠流程解除安裝，再核對殘留元件與網路狀態。

Published: 2026-08-15 | Updated: 2026-09-25

防毒軟體通常不只有 App 套件，還可能包含系統延伸功能、網路過濾設定、launchd 工作和特權輔助程式，受管理的 Mac 上也可能有設定描述檔。把 App 套件拖進垃圾桶，未必能一併移除這些元件，所以第一步應查看原廠的解除安裝說明，而不是直接用 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>App 套件之外，還有獨立檔案和由 macOS 管理的註冊資訊，不能只靠拖走 App 套件完成解除安裝。</figcaption>
</figure>

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

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

過濾器設定是需要檢查的一處。它由 Network Extension 偏好設定管理，原廠解除安裝流程需要處理相應設定，不能假定拖走 App 就完成了這一步。若過濾器仍啟用，提供程式卻已不存在，可能出現 DNS 查詢失敗、網頁卡住或連線逾時，即使 Wi-Fi 訊號滿格也一樣。不過這些症狀也有其他原因，仍要核對過濾器狀態與實際網路連線。

launchd 工作也要檢查。刪掉執行檔，不等於取消負責啟動它的工作，某些保持執行的設定可能反覆嘗試啟動失敗的服務，但不能只憑風扇變吵就斷定原因。反過來，刪除 plist 也不等於卸載已載入的工作，它可能繼續保留到被明確卸載或系統重新開機。特權輔助程式與設定描述檔需要分別處理，裝置管理的部署策略也可能重新安裝已移除的軟體。

<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>

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

資安軟體需要防止未經授權的停用。系統延伸功能通常要由使用者在設定中批准，受管理的 Mac 也可能由裝置管理策略預先批准，停用則應依原廠支援的流程處理。Apple 的[提示說明頁](https://support.apple.com/120363)在 macOS 15 以後指向「登入項目與延伸功能」，更早的版本是「隱私權與安全性」。直接拼一串 `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` 查看不同範圍：第一條是目前的登入工作階段，第二條是系統範圍。有 plist 卻沒有已載入工作，可能是未載入、已停用或遺留的定義；有已載入工作卻找不到 plist，也不代表只能靠重新開機移除。即使兩邊都有，也要看工作狀態才能判斷是否正在執行。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/) 的「軟體」分頁把已裝 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 是工作定義，刪掉它不等於卸載已載入的工作。先執行原廠解除安裝程式並按要求重新開機，再配合 `sudo launchctl list`、其他工作階段範圍、檔案歸屬和實際程序判斷殘留。單次清單沒有結果，不足以證明檔案可以刪除；仍在使用的軟體所需的 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
