Суррогатный общий доступ
Серверы 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 по умолчанию.
См. также