我有一个应用程序作为登录用户以外的用户运行。我在 dllhost.exe 中有一个 COM 服务器,它在登录用户的凭据下运行。如何在客户端上设置 COM 安全性以便能够与服务器通信?当我尝试创建对象的实例时,我得到一个 E_ACCESSDENIED (0x80070005)。以下是详细信息:我有一个在标准代理 (dllhost.exe) 下运行的 COM 组件,其中 AppID{GUID}\RunAs 设置为“交互式用户”。
客户端作为不同的用户运行并调用 CCO。至此,我可以确认 DCOM 服务启动了 dllhost.exe 并创建了服务器。但是,由于客户端和服务器的凭据不同,CCO 返回 0x80070005。我还尝试将调用 CCO 的线程(令牌)设置为与 COM 服务器(dllhost)相同的凭据,但它仍然失败。
我知道我可以使用 COM cloaking 来协商安全性,但是,它不是很清楚。我想确保它只调用这个被模拟的组件,而不是进程中的所有 COM 调用。任何帮助将不胜感激。