author avatar
    高級程式開發員
最後由王麗娜於 2026-10-10進行了更新

摘要
本文將詳細解析出現「Apple 無法檢查其是否包含惡意軟體」警告的技術原因,並深入說明 Gatekeeper 等 macOS 標準安全協定。同時提供從 Finder 選單到終端機指令的完整步驟,教您如何安全地繞過「Apple 無法檢查其是否包含惡意軟體」限制,順利執行未經驗證的應用程式。



無法打開,因為 Apple 無法檢查其是否包含惡意軟體
此訊息來自 Gatekeeper ,這是 Apple 內建的安全功能,用於檢查 App 是否來自已識別的開發者,以及 Apple 是否已對其進行 公證(notarized) 。
重要提示: 此警告 並不 代表您的 macOS發現了惡意軟體。這只表示 Apple 無法透過常規方式驗證該 App 的安全性 。
通常您 只有在確信該 App 安全無虞 的情況下才能繼續,例如:
- 您直接從開發者的官方網站下載
- 版本與開發者提供的版本相符
- 檔案的檢查碼或簽名(若有的話)相符
- 這正是您預期要下載的 App
若遇到以下情況, 請勿打開該 App :
- 檔案來自不明或不受信任的來源
- 您是從鏡像網站、論壇或檔案分享網站下載
- 包含破解檔、修補程式或修改過的安裝程式
- 檔案名稱、圖示或版本看起來很可疑
對於在 App Store 以外下載的 App(例如開源工具、媒體播放器、PDF 實用工具和小眾軟體),出現此警告是很常見的。
小提示: 在嘗試以下步驟前,請先將 App 移動到您的 「應用程式」 資料夾。這樣可以提高 macOS標準授權方法的成功率。

選用:在開啟 App 前進行額外的安全檢查

如果您仍不確定某個 App 或安裝程式是否安全,可以在打開前使用 VirusTotal 等線上惡意軟體分析服務進行快速掃描。這能提供額外資訊以幫助您評估潛在風險,但不能將其視為 Gatekeeper 等 macOS 安全功能的替代品。
virustotal.com
請將此作為額外的驗證層級,而非安全的絕對保證。如果 App 來自不受信任或可疑的來源,最好不要打開或安裝它。
VirusTotal 等線上惡意軟體分析服務 - 結果

安全開啟(快速方法)

安全提示: 只有在信任該 App 來源的情況下才繞過此警告。此外, 「強制打開」(Open Anyway) 選項通常會在 您嘗試打開 App 一次後 才會出現,並且大約只會保留 1 小時 。
如果您想快速打開 App,請先嘗試以下兩種方法。

方法 1:按住 Control 鍵並點擊(右鍵點擊)>「打開」

這通常是繞過受信任 App 的 Gatekeeper 警告最簡單且最可靠的方法。
1. 打開 Finder 。
2. 找到已下載的 App 或安裝程式:
- 如果您有 .app 檔案,可以視需要將其移動到 「應用程式」 。
- 如果您下載了 .dmg 檔案,請打開它並將裡面的 App 拖曳到 「應用程式」 。
- 如果您下載了 .pkg 安裝程式,則不需要移動它。您可以直接從目前位置執行。
在 macOS 中將 App、dmg 或 pkg 檔案拖曳到「應用程式」
3. 在 Finder 中,找到該 App 或安裝程式。
4. 按住 Control 鍵並點擊該項目,然後選擇 「打開」 。
在 macOS 中按住 Control 鍵並點擊打開
5. 當警告對話框出現時,再次點擊 「打開」 以確認。
6. 若有需要,請遵循後續的安裝提示。
之後,macOS 通常會記住您對該 App 的授權,讓您在未來可以正常打開它。

方法 2:使用「系統設定」>「隱私權與安全性」>「強制打開」

如果按住 Control 鍵並點擊(或右鍵點擊)的方法無效,您可以透過 macOS 安全設定手動允許該 App。
1. 打開 Apple 選單 並選擇 「系統設定」 。
打開 Apple 選單並選擇「系統設定」
2. 前往 「隱私權與安全性」 。在較舊版本的 macOS 中,請選擇 「安全性與隱私權」 。
3. 向下捲動至 「安全性」 區塊。
macOS、隱私權與安全性、安全性區塊
4. 找到提示該 App 已被阻擋打開的訊息。
5. 點擊 「強制打開」 。
macOS 安全性與隱私權強制打開
6. 若出現提示,請輸入您的 macOS密碼或使用 Touch ID。
7. 在確認對話框中,點擊 「打開」 以啟動該 App。
「強制打開」 按鈕只有在您嘗試打開該 App 至少一次後才會出現。此選項通常在被阻擋的啟動嘗試後的大約一小時內有效。
在您授權該 App 後,macOS 會記住您的選擇,因此您應該不需要重複這些步驟。

進階方法(適用於進階使用者)

如果標準的 macOS選項無效,請嘗試這些更進階的技術。

方法 3:使用 xattr 移除隔離屬性(進階)

macOS 會為從網路下載的檔案新增 隔離(quarantine) 屬性。移除此屬性可以避免出現警告。
打開 「終端機」 並執行符合您情況的指令。
在 macOS中打開「終端機」App
對於「應用程式」中的 App:

xattr -dr com.apple.quarantine "/Applications/AppName.app"

將 /Applications/AppName.app 替換為您檔案的實際路徑。
對於 /usr/local/bin 中的命令列工具:

xattr -d com.apple.quarantine /usr/local/bin/tool

對於整個資料夾:

xattr -dr com.apple.quarantine "/path/to/folder"

重要提示:
- 如果路徑包含空格,請用 引號 將其包起來。
- 對於 .dmg 或 .pkg,請先安裝或掛載它,然後將 xattr 套用到已安裝的 .app 或檔案。
- 如果您遇到權限錯誤,可能需要使用 sudo。
使用 sudo 的範例:

sudo xattr -dr com.apple.quarantine "/Applications/AppName.app"

此方法最適合熟悉「終端機」的使用者。如果您需要更廣泛的臨時覆寫,請參閱「暫時允許來自任何地方的 App (spctl)」,並在使用後重新啟用它 。

方法 4:暫時允許來自任何地方的 App (spctl) — 並在使用後重新啟用

請 僅將其作為最後手段 使用——這會放寬 Gatekeeper 對所有 App 的安全限制。
打開 「終端機」 並執行符合您情況的指令。
在 macOS中打開「終端機」App
若要暫時允許來自任何地方的 App,請執行:

sudo spctl –master-disable

停用 Gatekeeper 以避免出現「Apple 無法檢查其是否包含惡意軟體」錯誤
打開被阻擋的 App。
完成後,請立即重新啟用 Gatekeeper:

sudo spctl –master-enable

請記住:
- 這會變更 全域 安全性設定。
- 僅短暫使用。
- 請勿 將其停用超過必要的時間。
如果只有一個 App 被阻擋,使用前面的方法會安全得多。

常見問題

這代表我的 macOS有惡意軟體嗎?

不是。此警告通常代表 Gatekeeper 無法驗證該 App 的公證或開發者身分 ,而不是發現了惡意軟體。這與 「會損壞您的電腦」 等更嚴重的警告不同。如果您信任該來源,請嘗試方法 1 或方法 2 。

為什麼沒有出現「強制打開」按鈕?

通常是因為您還沒有嘗試打開該 App。請先雙擊或使用方法 1 ,然後再次檢查 「系統設定」>「隱私權與安全性」 。 「強制打開」 按鈕通常僅在大約 1 小時 內有效。在受管理的公司或學校 macOS上,此選項可能會因管理原則而停用。

「Apple 無法檢查...」、「無法驗證開發者」、「App 已損壞」和「會損壞您的電腦」之間有什麼差別?

這些是不同的警告:
- 「Apple 無法檢查…」 :Apple 無法驗證該 App 的公證或開發者身分。
- 「無法驗證開發者」 :開發者的身分不受信任。
- 「App 已損壞」 :該 App 可能已損毀或封裝不當。
- 「會損壞您的電腦」 :嚴重得多—— 請勿 繞過此警告。
如果您遇到其他警告,請參閱針對這些訊息的特定指南。
    `; leftFixedMulu.children[0].children[1].innerHTML = ''; let ml = document.querySelector('.ml'); let eles = ml.getElementsByTagName('*'); let arr = []; for(let i=0; i${eles[i].children[1].innerHTML}`; } if(eles[i].tagName == 'LI'){ console.log(eles[i]); let href = JSON.stringify(eles[i].children[0].getAttribute('href').substr(1)); arr.push(href); leftFixedMulu.children[0].children[1].innerHTML += `
  • ${eles[i].innerHTML}
  • `; } } console.log('anchor link:'+arr.toString()); leftFixedMulu.children[0].children[1].innerHTML += '
'; mainBox.appendChild(leftFixedMulu); /* * 2. fix flow */ window.onscroll = function(){ let sclTop = document.body.scrollTop || document.documentElement.scrollTop; let mlBox = document.querySelector('.ml'); let offsetTopNum = mlBox.scrollHeight + mlBox.offsetHeight; // console.log(offsetTopNum); let fixedMulu = document.querySelector('.left-fixed-inner'); if(sclTop > offsetTopNum){ fixedMulu.classList.add('cur'); }else{ fixedMulu.classList.remove('cur'); } }

使用者評論

Page 1

發表評論


您的留言已提交,正在等待審核。