Registrazione del server DLL per l'attivazione surrogata
Un server DLL verrà caricato in un processo surrogato nelle condizioni seguenti:
- Nel Registro di sistema deve essere specificato un valore AppID specificato nella chiave CLSID e una chiave AppID corrispondente.
- In una chiamata di attivazione viene impostato il bit CLSCTX_LOCAL_edizione Standard RVER e la chiave CLSID non specifica LocalServer32, LocalServer o LocalService. Se vengono impostati altri bit CLSCTX, viene seguito l'algoritmo di elaborazione per i flag di esecuzione in-process, local o remote.
- La chiave CLSID contiene la sottochiave InprocServer32 .
- La DLL specificata nella chiave InprocServer32 esiste.
- Il valore DllSurrogate esiste nella chiave AppID .
Se è presente un LocalServer, LocalServer32 o LocalService, che indica l'esistenza di un file EXE, il server EXE o il servizio verrà sempre avviato in modo da caricare un server DLL in un processo surrogato.
Per l'attivazione del surrogato, è necessario specificare il valore denominato DllSurrogate . L'attivazione si riferisce alle chiamate a una delle funzioni di attivazione seguenti:
- CoGetClassObject
- CoCreateInstanceEx
- CoGetInstanceFromFile
- CoGetInstanceFromI Archiviazione
- IMoniker::BindToObject
Per avviare un'istanza del surrogato fornito dal sistema, impostare il valore di DllSurrogate su una stringa vuota o su NULL. Per specificare l'avvio di un surrogato personalizzato, impostare il valore sul percorso del surrogato.
Se per lo stesso AppID vengono specificati sia RemoteServerName che DllSurrogate, il valore RemoteServerName viene ignorato e il valore DllSurrogate causa un'attivazione nel computer locale. Per l'attivazione surrogata remota, specificare RemoteServerName ma non DllSurrogate nel client e specificare DllSurrogate nel server.
Un server DLL progettato per essere sempre eseguito da solo nel proprio processo surrogato è meglio configurato con un Id AppID uguale al relativo CLSID. In AppID specificare semplicemente un valore denominato-value DllSurrogate con un valore stringa vuoto.
È consigliabile configurare un server DLL progettato per essere eseguito da solo nel proprio processo surrogato e per gestire più client in una rete con un valore RunAs specificato nella chiave del Registro di sistema AppID . Il fatto che RunAs specifichi "Interactive User" o un'identità utente specifica dipende dall'interfaccia utente, dalla sicurezza e da altri requisiti del server. Quando si specifica un valore RunAs , viene caricata una sola istanza del server per il servizio di tutti i client, indipendentemente dall'identità del client. D'altra parte, non configurare il server con RunAs se l'intenzione è quella di avere un'istanza del server DLL in esecuzione nel surrogato per gestire ogni identità client remota.
Argomenti correlati
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per