Поделиться через


Суррогатный общий доступ

Серверы DLL будут совместно использовать суррогат, если они имеют соответствующие удостоверения безопасности и совместно используют одно и то же значение AppID.

По умолчанию серверы 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
 

Два CLSID для компонентов DLL comp1.dll и comp2.dll настроены для совместного использования AppID. Ключ AppID указывает, что сервер DLL можно загрузить в суррогат, указав значение DllSurrogate. В этом примере значение DllSurrogate является пустой строкой, указывающей, что следует использовать системную реализацию суррогата DLL по умолчанию.

Требования к серверу DLL

Регистрация сервера DLL для суррогатной активации