Surrogate 共用
如果 DLL 伺服器具有相符的安全性身分識別,並共用相同的 AppID 值,則 DLL 伺服器將會共用代理。
根據預設,DLL 伺服器會載入自己的代理程式。 若要將其他 DLL 伺服器載入現有的代理,使其支援多個 DLL 伺服器,有兩個需求:
- DLL 伺服器必須具有相同的AppID值。
- DLL 伺服器的安全性內容必須相同。
如果要在不同的安全性身分識別下啟動兩部 DLL 伺服器,它們必須位於不同的代理中,其 AppID 是否相符。
以下是使用 AppID 管理 Surrogate 共用的範例:
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 索引鍵指定 DLL 伺服器可以藉由指定 DllSurrogate 值,在代理中載入。 在此範例中 ,DllSurrogate 值是空字串串,表示應該使用 DLL 代理的默認系統實作。
相關主題