如何允許 MAPI 載入未註冊的提供者 Dll

提供者動態連結程式庫(Dll)通常是由增益集或獨立整合所使用,以變更或延伸 Microsoft Outlook 功能(例如通訊錄)。 不過,攻擊者也可以使用 Dll 來破壞電腦或網路的安全性。為了協助提高安全性,MAPI 立即封鎖提供者 Dll 不正確地註冊。

只要有可能,您就應該使用 MapiSvc 來註冊提供者 DLL,如MapiSvc 的檔案格式所述。 不過,您可能不一定可以註冊提供者 DLL。 例如,增益集可能會在安裝程式期間自動註冊提供者 DLL,或不支援的增益集可能無法正確註冊提供者 DLL,且無法修正。

本文將說明當提供者 DLL 未正確註冊時可能遇到的問題,並提供因應措施讓 MAPI 載入提供者 DLL (如果 DLL 無法正確註冊)。 

重要

本文包含的資訊說明如何協助您減少安全性設定,或如何關閉電腦上的安全性功能。 您可以進行這些變更,以解決特定問題。 在進行這些變更之前,我們建議您評估與在您的特定環境中實施此因應措施相關的風險。 如果您選擇要實施此因應措施,請採取任何適當的額外步驟以協助保護您的系統。

徵狀

如果 MAPI 封鎖提供者 DLL,您可能會遇到下列問題。

症狀1

您會收到類似以下的錯誤訊息: 

發生未預期的錯誤。 MAPI 無法載入資訊服務 <DLL 名稱>。 請確認服務已正確安裝和設定。

The error message saying MAPI was unable to load the information service DLL.

此外,Outlook 會在 Windows 事件檢視器中產生一個或多個錯誤等級專案。 這個事件記錄專案包含受封鎖的提供者 DLL 的路徑。 此記錄專案也包含有關如何使用 MapiSvc 正確註冊提供者 DLL 的詳細資訊連結。

症狀2

DLL 所提供的功能已不再提供。 視受影響的功能而定,您可能會看到意外的行為或其他錯誤訊息。 

注意事項

  • 您遇到的症狀可能會變更,視增益集如何回應提供者 DLL 封鎖而定。 例如,每次可能會出現錯誤訊息,可能只會出現一次,或根本不會出現。 因此,如果錯誤訊息停止出現,就不會指出問題已解決。

  • 如果您不採取任何動作,MAPI 在每次要求時,都會繼續封鎖這個提供者 DLL。 您可能會繼續看到錯誤訊息和事件記錄專案,而且任何受影響的增益集功能在每個 Outlook 會話中都會繼續受到影響。

因應措施

重要 我們不建議您套用此因應措施,因為這可能會讓您的電腦或網路更容易受到惡意使用者或惡意軟體(例如病毒)的攻擊。 建議您透過 MapiSvc 註冊提供者 DLL,以協助保護電腦和網路。 如需有關如何正確註冊提供者 dll 的詳細資訊,請參閱MapiSvc 的檔案格式

注意: 在特定情況下,此因應措施可讓您載入提供者 DLL:

  • 提供者 DLL 路徑不能包含目錄元件。 請查看錯誤訊息及 Windows 事件記錄專案,以查看路徑。 出於安全性考慮,MAPI 不允許使用此因應措施載入任何目錄元件的提供者 DLL 路徑。 在這種情況下,您應該使用 MapiSvc 來登錄提供者 DLL,因為 MapiSvc 可讓提供者 Dll 在任意路徑上註冊。

  • 提供者 DLL 必須存在於安裝 Office 的 Office16 路徑或 Windows System32 目錄中。 如果提供者 DLL 不在這兩個位置中,MAPI 就無法找到,而且無法透過因應措施步驟載入提供者 DLL。

如果不符合這些條件,就無法使用此因應措施,且提供者 DLL 應該透過 MapiSvc 進行註冊。

警告

請仔細按照本節中的步驟進行。 如果您不正確地修改註冊,可能會發生嚴重問題。 修改前,請先備份登錄,以進行還原,以防發生案例問題。

在您套用此解決方法之前,請確認 MAPI 載入正確的提供者 DLL。若要這樣做,查看錯誤訊息或 Windows 事件記錄專案中提供的路徑,以及 MAPI 將搜尋的目錄集。載入任意提供者 DLL 是不安全的。

 

  1. 開啟 [登錄編輯程式],然後找出下列登錄子機碼:HKEY_CURRENT_USER \software\microsoft\office\16.0\outlook\security

  2. 如果安全參數尚不存在,請選取Outlook金鑰加以建立,然後編輯>的 >金鑰]。 請確定您已正確命名新的金鑰。

  3. 在名為TrustedProviders安全性底下建立登錄機碼。確認TrustedProviders子項的路徑如下所示: HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security\TrustedProviders

  4. 或者,您也可以改為在下列登錄位置建立TrustedProviders鍵: HKEY_CURRENT_USER \software\policies\microsoft\office\16.0\outlook\security

  5. TrustedProviders鍵中,新增一個新的字串值,然後將 [ name ] (名稱)欄位,從錯誤訊息或 Windows 事件記錄專案中,設定為提供者 DLL 路徑(包括檔案名副檔名 ".dll")。例如,螢幕擷取畫面中的範例錯誤訊息中的路徑是MyProvider。若要讓 MAPI 載入這個提供者 DLL,請輸入MyProvider做為名稱。請記住,只有沒有目錄元件的路徑才是有效的解決方法。請注意,資料欄位中不需要任何文字。 注意事項

    • 在磁片上,提供者 DLL 名稱包含尾碼 "32" (例如 "myprovider32")。 此「32」尾碼不應該包含在登錄專案中。 這個行為符合MapiSvc .inf的預期,該期望值也要求不包含 "32" 尾碼。

    • [名稱] 欄位不區分大小寫。

  6. 您必須針對被封鎖的每個提供者 DLL,建立唯一的登錄專案。 針對每個封鎖的提供者 DLL,重複執行步驟5。 在您將每個提供者 DLL 新增到此清單之前,請務必先透過錯誤訊息或 Windows 事件日誌 doublecheck 每個提供者 DLL 的路徑。 這個行為請確認應該載入提供者 DLL。 此外,如果路徑包含任何目錄元件,只要安全考慮,就可以透過 MapiSvc 進行登錄。

  7. 啟動 Outlook,並確認錯誤已解決。 如果任何增益集的行為受到影響,請確認它現在已正常運作。

其他相關資訊

本文只適用于 office 365 訂閱版本的 Office 或 Outlook。 不適用於下列 Office 版本:

  • 舊版 Office 版本(例如 Office 2010 和 Office 2013)

  • 使用 Windows Installer (MSI)安裝技術的永久版本的 Office 2016

  • Office 2019

在這些版本中,MAPI 會進行一些安全性檢查,但不會完全強制執行相同的需求。

 

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

Thank you for your feedback!

Thank you for your feedback! It sounds like it might be helpful to connect you to one of our Office support agents.

×