Condividi tramite


Registrazione di una classe all'installazione

Se una classe è destinata a essere disponibile per i client in qualsiasi momento, poiché la maggior parte delle applicazioni è in genere registrata tramite un programma di installazione e installazione. Ciò significa inserire informazioni sull'applicazione nel Registro di sistema, incluse le modalità e la posizione in cui creare un'istanza degli oggetti. Queste informazioni devono essere registrate per tutti i CLSID. Altre informazioni sono facoltative. Strumenti come Regsvr32 semplificano la scrittura di un programma di installazione che registra i server all'installazione.

Se non si fa affidamento sulle impostazioni predefinite di sistema, nel Registro di sistema sono presenti due chiavi importanti: CLSID e AppID. Tra le informazioni importanti contenute in queste chiavi è possibile creare un'istanza dell'oggetto. Gli oggetti possono essere designati come in-process, out-of-process locali o out-of-process remoti.

Nella chiave AppID sono disponibili diversi valori che definiscono informazioni specifiche per l'applicazione. Tra questi sono RemoteServerName e ActivateAt Archiviazione, entrambi utilizzabili per consentire a un client di creare un oggetto, con il client che non ha alcuna conoscenza predefinita del percorso del server. Per altre informazioni sulla creazione di istanze remote, vedere Individuazione di un oggetto remoto e funzioni helper di creazione di istanze.

Un server può anche essere installato come servizio o per l'esecuzione con un account utente specifico. Per altre informazioni, vedere Installazione come applicazione di servizio.

Un server o un oggetto ROT che non è un servizio o in esecuzione con un account utente specifico può essere definito server "activate as activator". Per questi server, il contesto di sicurezza e la stazione/desktop della finestra del client devono corrispondere a quello del server. Un client che tenta di connettersi a un server remoto viene considerato avere una stazione/desktop finestra NULL , pertanto solo il contesto di sicurezza del server viene confrontato in questa istanza. Per altre informazioni sui SID, vedere Sicurezza in COM. COM memorizza nella cache la stazione/desktop della finestra di un processo quando il processo si connette per la prima volta al servizio COM distribuito. Pertanto, i client e i server COM non devono modificare la loro stazione finestra o thread desktop del processo dopo aver chiamato CoInitialize o CoInitializeEx.

Quando una classe viene registrata come in-process, una chiamata a CoGetClassObject per creare il relativo oggetto classe viene passata automaticamente da COM alla funzione DllGetClassObject , che la classe deve implementare per assegnare all'oggetto chiamante un puntatore al relativo oggetto classe.

Le classi implementate nei file eseguibili possono specificare che COM deve eseguire il processo e attendere che il processo registri l'interfaccia IClassFactory dell'oggetto classe tramite una chiamata alla funzione CoRegisterClassObject.

Chiavi del Registro di sistema COM

Installazione come applicazione di servizio

Registrazione di un server EXE in esecuzione

Registrazione dei componenti

Registrazione di oggetti in ROT

Registrazione automatica