Condividi tramite


Impostazione Process-Wide sicurezza tramite il Registro di sistema

Se si vuole impostare la sicurezza per un intero processo, una soluzione consiste nell'impostare i livelli di sicurezza desiderati nel Registro di sistema. Se l'applicazione non può chiamare CoInitializeSecurity o se si preferisce non usare la sicurezza a livello di codice, questa potrebbe essere un'opzione valida. Se si decide di impostare la sicurezza a livello di processo usando il Registro di sistema, è necessario tenere presente che se si chiama CoInitializeSecurity all'interno del programma COM userà i valori in CoInitializeSecurity e ignorerà i valori del Registro di sistema.

Esistono due modi per impostare la sicurezza nel Registro di sistema per l'applicazione:

  • È possibile usare Dcomcnfg.exe, che fornisce una semplice interfaccia utente per la modifica dei valori di sicurezza. Tutti i server COM possono essere configurati usando Dcomcnfg.exe. Per altre informazioni, vedere impostazione Process-Wide sicurezza tramite DCOMCNFG. Tuttavia, le applicazioni client non vengono in genere visualizzate in Dcomcnfg.exe a meno che il client non crei un GUID e lo immetta nel Registro di sistema.
  • È possibile impostare i valori di sicurezza sotto il codice AppID per l'app. Nella parte restante di questo argomento viene illustrato come impostare la sicurezza nel Registro di sistema usando la chiave AppID.

AppID è un GUID che rappresenta un processo server per una o più classi. Ogni classe è associata esattamente a un Id app e gli ID app possono essere assegnati solo ad EXEs. Le DLL non ottengono AppID se non sono in esecuzione in un surrogato, e in quel caso è il processo surrogato ad avere l'AppID. Se più DLL vengono caricate in un surrogato, ogni surrogato ha un solo ID app.

Per alcuni server COM, il codice di registrazione genera un AppID e inserisce nel Registro di sistema le voci che associano l'AppID al nome dell'eseguibile. Tuttavia, alcuni server COM non forniscono questa funzionalità. Tuttavia, se il codice di registrazione del server aggiunge un'entrata per HKCR\CLSID{ServerCLSID}\LocalServer32 durante l'esecuzione di dcomcnfg.exe, verrà aggiunto automaticamente un AppID per il CLSID.

Per un client COM che non è un server, questo mapping non viene creato perché il client non è mai registrato. Pertanto, per impostare la sicurezza usando la chiave AppID, il client deve creare le voci del Registro di sistema necessarie a livello di codice usando le funzioni del Registro di sistema o regedit.

Se si decide di impostare la sicurezza a livello di processo nel Registro di sistema nella chiave AppID, tenere presente che nella chiave AppID è possibile impostare due valori denominati senza disporre delle autorizzazioni di amministratore:

I valori di AuthenticationLevel e AccessPermission vengono impostati in modo indipendente e hanno valori predefiniti separati. Se il valore authenticationLevel non è presente, il valore LegacyAuthenticationLevel viene usato come valore predefinito. Analogamente, se il valore AccessPermission non è presente, il valore DefaultAccessPermission viene usato come valore predefinito. Tuttavia, i valori AuthenticationLevel e AccessPermission sono correlati nei modi seguenti:

  • Se l'AuthenticationLevel è nessuno, i valori AccessPermission e DefaultAccessPermission vengono ignorati per tale applicazione.
  • Se il AuthenticationLevel non è presente e il LegacyAuthenticationLevel è nessuno, i valori AccessPermission e DefaultAccessPermission vengono ignorati per tale applicazione.

Impostazione sicurezza Process-Wide