WIA 驅動程式的跨進程 COM 物件
如果驅動程式呼叫CoCreatInstance (Microsoft Windows SDK檔中所述,) 跨進程元件,除非元件具有適當的許可權設定為允許驅動程式存取,否則該呼叫將會失敗。
如需 COM 安全性模型的詳細資訊,請參閱 COM 程式設計書籍或線上檔。 以下是簡短說明。
有兩種與跨進程 COM 元件相關聯的許可權:
啟動許可權
啟動許可權指出如果 COM 元件目前未執行,誰有權啟動 COM 元件。 例如,如果元件是在未執行的本機伺服器上實作,則呼叫該元件的 CoCreateInstance 會導致 COM 嘗試啟動本機伺服器 (假設呼叫端有權啟動它) 。
存取權限
存取權限表示誰可以呼叫該程式,以擷取這些 COM 元件的 COM 介面。
啟動許可權和存取權限不一定相符。 例如,啟動許可權只能設定為系統管理員,但存取權限可以設定為互動式使用者和系統管理員。 或者,系統管理員可能會獲得啟動 COM 伺服器的許可權,但一般使用者只能在 COM 伺服器執行時使用元件。
最佳做法是將 COM 伺服器的啟動和存取權限儲存在元件 AppId 登錄子機碼下的適當位置。 這可讓系統管理員視需要使用元件服務管理工具來變更這些許可權。 若要讓 COM 伺服器在執行時間使用這些存取權限,請務必呼叫 Windows SDK 檔中所述的 CoInitializeSecurity (,) 搭配 EOAC_APPID 旗標,傳入元件的 AppId。 這會導致 COM 移至登錄中的元件 AppId 子機碼,並使用 AccessPermission 和 LaunchPermission 專案中設定的許可權。