關閉啟用安全性
一般而言,啟用會使用預設安全性設定。 不過,您可以藉由指定 COAUTHINFO 結構來控制啟用安全性,這是傳遞至啟用函式之 COSERVERINFO 結構的成員。 如果用戶端在 COAUTHINFO 結構中指定RPC_C_AUTHN_LEVEL_NONE的驗證層級,則不會嘗試驗證。 否則會嘗試安全啟用,如果驗證失敗,則啟用會失敗。
如果用戶端未指定明確的 COAUTHINFO 結構,而是將指標設定為 NULL,COM 會嘗試驗證用戶端。 如果無法驗證用戶端,COM 會檢查啟動許可權安全性描述元,以查看是否有 NULL DACL 或允許存取 Everyone 的 ACL。 如果這項檢查成功,就會啟動伺服器。 因此,即使用戶端未指定 COAUTHINFO結構,當伺服器允許時,可能會進行不安全的啟用。
注意
若要允許未經驗證的網路使用者執行 COM 應用程式,應用程式角色必須包含匿名使用者。 從 Windows Server 2003 開始,匿名用戶預設不會包含在 [所有人] 群組中。
即使伺服器允許啟用,用戶端還是會明確關閉啟用安全性? 因為當用戶端不想要或需要安全性檢查時,明確關閉啟用安全性會增加效能。
必須執行下列動作,才能明確關閉啟用安全性:
- 客戶端必須在 COAUTHINFO 結構中指定RPC_C_AUTHN_LEVEL_NONE的驗證層級,而 COAUTHINFO 結構是提供給啟用函式的 COSERVERINFO 結構成員。
- 客戶端必須在 COAUTHINFO 結構中指定RPC_C_IMP_LEVEL_IMPERSONATE的模擬層級,而 COAUTHINFO 結構是提供給啟用函式的 COSERVERINFO 結構成員。 如果未傳遞此值,您將會收到RPC_S_SERVER_UNAVAILABLE。
- 伺服器必須針對預設啟動許可權指定 Everyone。 執行這項工作的建議方式是使用 Dcomcnfg.exe,如下所示:
- 執行 Dcomcnfg.exe。
- 在 [ 應用程式] 頁面上,選取代表伺服器的應用程式。 按兩下 [ 屬性] 按鈕(或按兩下選取的應用程式)。
- 在 [ 安全性 ] 屬性頁面上,按兩下 [ 使用自定義啟動許可權 ] 按鈕。
- 按兩下 [啟動權限] 區域中的 [編輯] 按鈕。
- 在 [ 登錄值許可權] 對話框中,按兩下 [ 新增 ] 按鈕。
- 在清單框中選取 [所有人 ] 的專案。
- 在 [ 存取 類型] 列表框中,選擇 [ 允許啟動]。
- 按一下 [確定] 按鈕。
注意
在 Windows Server 2003 中,COM+ 系統應用程式的驗證功能包含值EOAC_DISABLE_AAA。 這個值會停用啟動即啟動器 (AAA) 啟用,會在啟動系統應用程式時,在 CoInitializeSecurity 呼叫中使用。 將驗證功能設定為 EOAC_DISABLE_AAA可讓以特殊許可權帳戶 (例如 LocalSystem) 執行的應用程式,協助防止其身分識別用來啟動不受信任的元件。
相關主題