代理项共享

如果 DLL 服务器具有匹配的安全标识并共享相同的 AppID 值,则 DLL 服务器将共享代理项。

默认情况下,DLL 服务器会加载到自己的代理进程。 若要将其他 DLL 服务器加载到现有代理项中,使其支持多个 DLL 服务器,有两个要求:

  • DLL 服务器必须具有相同的 AppID 值。
  • DLL 服务器的安全上下文必须相同。

如果要在不同的安全标识下启动两个 DLL 服务器,则无论它们的 AppID 是否匹配,它们都必须位于不同的代理中。

下面是使用 AppID 管理代理项共享的示例:

    AppID
        {00001111-aaaa-2222-bbbb-3333cccc4444}
            @DllSurrogate    REG_SZ
    CLSID
        {12345678-0000-0000-0000-000000000001}
            @AppId    REG_SZ    {00001111-aaaa-2222-bbbb-3333cccc4444}
            InProcServer32
    @    REG_SZ    c:\myapp\comp1.dll
        {12345678-0000-0000-0000-000000000002}
            @AppId    REG_SZ    {00001111-aaaa-2222-bbbb-3333cccc4444}
            InProcServer32
    @    REG_SZ    c:\myapp\comp2.dll
 

DLL 组件的两个 CLSID comp1.dll 和 comp2.dll 已配置为共享 AppID。 AppID 键指定可以通过指定 DllSurrogate 值在代理项中加载 DLL 服务器。 在本例中,DllSurrogate 值为空字符串,指示应使用 DLL 代理项的默认系统实现。

DLL 服务器要求

注册 DLL 服务器以激活代理项