Sdílet prostřednictvím


Nastavení Process-Wide zabezpečení prostřednictvím registru

Pokud chcete nastavit zabezpečení pro celý proces, jedním z řešení je nastavení požadovaných úrovní zabezpečení v registru. Pokud vaše aplikace nemůže volat CoInitializeSecurity nebo pokud nechcete používat programové zabezpečení, může to být dobrá volba. Pokud se rozhodnete nastavit zabezpečení na úrovni celého procesu pomocí registru, měli byste vědět, že pokud voláte CoInitializeSecurity v rámci programu COM, budou používat hodnoty v CoInitializeSecurity a ignorovat hodnoty registru.

Zabezpečení v registru pro vaši aplikaci můžete nastavit dvěma způsoby:

  • Můžete použít Dcomcnfg.exe, která poskytuje jednoduché uživatelské rozhraní pro úpravu hodnot zabezpečení. Všechny servery COM lze konfigurovat pomocí Dcomcnfg.exe. Další informace naleznete v tématu Nastavení Process-Wide zabezpečení pomocí DCOMCNFG. Klientské aplikace se ale obvykle nezobrazují v Dcomcnfg.exe, pokud klient nevytváří identifikátor GUID a nezadá ho do registru.
  • Hodnoty zabezpečení můžete nastavit v klíči aplikace AppID. Zbývající část tohoto tématu vysvětluje, jak nastavit zabezpečení v registru pomocí klíče AppID.

AppID je identifikátor GUID, který představuje proces serveru pro jednu nebo více tříd. Každá třída je přidružena přesně k jedné ID aplikace a ID aplikací lze přiřadit pouze k EXEs. Knihovny DLL nedostanou AppID, pokud nejsou spuštěné v zástupném procesu, a pak je to zástupný proces, který má AppID. Pokud je do náhradního procesu načteno více knihoven DLL, má každý náhradní proces pouze jedno AppID.

U některých serverů COM kód registrace vygeneruje APPID a umístí položky do registru, které mapují AppID na název spustitelného souboru. Některé servery COM ale tuto funkci neposkytují. Pokud však registrační kód serveru přidá položku pro HKCR\CLSID{ServerCLSID}\LocalServer32 při spuštění dcomcnfg.exe, automaticky přidá ID aplikace pro CLSID.

Pro klienta modelu COM, který není serverem, se toto mapování nevytvořilo, protože klient není nikdy zaregistrovaný. Pokud tedy chcete nastavit zabezpečení pomocí klíče AppID, musí klient vytvořit nezbytné položky registru, a to buď prostřednictvím kódu programu, pomocí funkcí registru nebo pomocí regedit.

Pokud se rozhodnete nastavit zabezpečení celého procesu v registru v klíči AppID, mějte na paměti, že pod klíčem AppID existují dvě pojmenované hodnoty, které můžete nastavit bez oprávnění správce:

Hodnoty AuthenticationLevel a AccessPermission jsou nastaveny nezávisle a mají výchozí samostatné hodnoty. Pokud hodnota AuthenticationLevel neexistuje, jako výchozí se použije hodnota LegacyAuthenticationLevel. Podobně platí, že pokud hodnota AccessPermission neexistuje, použije se výchozí hodnota DefaultAccessPermission. Hodnoty AuthenticationLevel a AccessPermission ale vzájemně souvisejí následujícími způsoby:

  • Pokud AuthenticationLevel je žádné, hodnoty AccessPermission a DefaultAccessPermission jsou pro danou aplikaci ignorovány.
  • Pokud AuthenticationLevel není k dispozici a LegacyAuthenticationLevel je žádná, jsou AccessPermission a DefaultAccessPermission hodnoty ignorovány pro tuto aplikaci.

Nastavení Process-Wide zabezpečení