Festlegen Process-Wide Sicherheit über die Registrierung
Wenn Sie die Sicherheit für einen gesamten Prozess festlegen möchten, besteht eine Lösung darin, die gewünschten Sicherheitsstufen in der Registrierung festzulegen. Wenn Ihre Anwendung CoInitializeSecurity nicht aufrufen kann oder Wenn Sie es vorziehen, keine programmgesteuerte Sicherheit zu verwenden, ist dies möglicherweise eine gute Option. Wenn Sie sich entscheiden, die prozessweite Sicherheit mithilfe der Registrierung festzulegen, sollten Sie beachten, dass beim Aufrufen von CoInitializeSecurity in Ihrem Programm COM die Werte in CoInitializeSecurity verwendet und die Registrierungswerte ignoriert werden.
Es gibt zwei Möglichkeiten, die Sicherheit in der Registrierung für Ihre Anwendung festzulegen:
- Sie können Dcomcnfg.exe verwenden, das eine einfache Benutzeroberfläche zum Ändern von Sicherheitswerten bietet. Alle COM-Server können mit Dcomcnfg.exe konfiguriert werden. Weitere Informationen finden Sie unter Festlegen Process-Wide Sicherheit mithilfe von DCOMCNFG. Clientanwendungen werden jedoch normalerweise nicht in Dcomcnfg.exe angezeigt, es sei denn, der Client erstellt eine GUID und gibt sie in die Registrierung ein.
- Sie können Sicherheitswerte unter dem AppID-Schlüssel für die Anwendung festlegen. Im weiteren Verlauf dieses Themas wird erläutert, wie Die Sicherheit in der Registrierung mithilfe des AppID-Schlüssels festgelegt wird.
Eine AppID ist eine GUID, die einen Serverprozess für eine oder mehrere Klassen darstellt. Jede Klasse ist genau einer AppID zugeordnet, und AppIDs können nur EXEs zugewiesen werden. DLLs erhalten keine AppIDs, es sei denn, sie werden in einem Ersatzzeichen ausgeführt, und dann ist es der Ersatzprozess, der über die AppID verfügt. Wenn mehrere DLLs in ein Ersatzzeichen geladen werden, verfügt jedes Ersatzzeichen nur über eine AppID.
Für einige COM-Server generiert der Registrierungscode eine AppID und platziert Einträge in der Registrierung, die die AppID dem Namen der ausführbaren Datei zuordnen. Einige COM-Server stellen diese Funktionalität jedoch nicht bereit. Wenn der Registrierungscode des Servers jedoch einen Eintrag für HKCR\CLSID{ServerCLSID}\LocalServer32 hinzufügt, wenn dcomcnfg.exe ausgeführt wird, wird automatisch eine AppID für die CLSID hinzugefügt.
Für einen COM-Client, der kein Server ist, wird diese Zuordnung nicht erstellt, da der Client nie registriert ist. Um die Sicherheit mithilfe des AppID-Schlüssels festzulegen, muss der Client daher die erforderlichen Registrierungseinträge entweder programmgesteuert mithilfe der Registrierungsfunktionen oder mithilfe von regedit erstellen.
Wenn Sie die prozessweite Sicherheit in der Registrierung unter dem AppID-Schlüssel festlegen möchten, beachten Sie, dass unter dem AppID-Schlüssel zwei benannte Werte vorhanden sind, die Sie ohne Administratorberechtigungen festlegen können:
Die Werte AuthenticationLevel und AccessPermission werden unabhängig voneinander festgelegt und weisen separate Standardwerte auf. Wenn der AuthenticationLevel-Wert nicht vorhanden ist, wird der LegacyAuthenticationLevel-Wert als Standard verwendet. Wenn der AccessPermission-Wert nicht vorhanden ist, wird der DefaultAccessPermission-Wert als Standard verwendet. Die Werte AuthenticationLevel und AccessPermission hängen jedoch wie folgt zusammen:
- Wenn AuthenticationLevel keine ist, werden die Werte AccessPermission und DefaultAccessPermission für diese Anwendung ignoriert.
- Wenn AuthenticationLevel nicht vorhanden ist und LegacyAuthenticationLevel keine ist, werden die Werte AccessPermission und DefaultAccessPermission für diese Anwendung ignoriert.
Zugehörige Themen