【发布时间】:2017-02-09 07:14:42
【问题描述】:
如何将 COM 服务作为系统运行并允许来自任何安全上下文的任何客户端连接到它?
我有一个 .exe,通过调用 CoRegisterClassObject 来托管我的类对象。当我以管理员身份运行 .exe 时,相同的管理员帐户可以与之交互。当我以系统身份运行 .exe 时,管理员帐户在调用 CoCreateInstance 时失败,错误为 0x80040154。
更新:
我已经取得了一些进展。在 COM 服务中,我使用 ROTFLAGS_ALLOWANYCLIENT 标志在运行对象表中注册了我的类工厂。在客户端中,我使用运行对象表的GetObject 方法来获取指向类工厂的指针。这允许我在以非管理员帐户作为管理员运行时访问该服务。但是,当它作为系统运行时,非系统客户端的 CoCreateInstance 调用失败并显示 0x80070005。我怀疑这个问题与here 描述的问题有关。
【问题讨论】: