Establecer Process-Wide seguridad a través del Registro

Si desea establecer la seguridad para un proceso completo, una solución consiste en establecer los niveles de seguridad que desee en el registro. Si la aplicación no puede llamar a CoInitializeSecurity o si prefiere no usar la seguridad mediante programación, podría ser una buena opción. Si decide establecer la seguridad en todo el proceso mediante el Registro, debe tener en cuenta que si llama a CoInitializeSecurity en el programa COM usará los valores de CoInitializeSecurity y omitirá los valores del Registro.

Hay dos maneras de establecer la seguridad en el registro para la aplicación:

  • Puede usar Dcomcnfg.exe, que proporciona una interfaz de usuario sencilla para modificar los valores de seguridad. Todos los servidores COM se pueden configurar mediante Dcomcnfg.exe. Para obtener más información, vea Establecer Process-Wide seguridad mediante DCOMCNFG. Sin embargo, las aplicaciones cliente normalmente no aparecen en Dcomcnfg.exe a menos que el cliente cree un GUID y lo escriba en el registro.
  • Puede establecer valores de seguridad en la clave AppID de la aplicación. En el resto de este tema se explica cómo establecer la seguridad en el Registro mediante la clave AppID .

Un AppID es un GUID que representa un proceso de servidor para una o varias clases. Cada clase está asociada exactamente a un AppID y los AppID solo se pueden asignar a EXE. Los archivos DLL no obtienen appID a menos que se ejecuten en un suplente y, a continuación, es el proceso suplente que tiene el AppID. Si se cargan varios archivos DLL en un suplente, cada suplente solo tiene un AppID.

Para algunos servidores COM, el código de registro genera un AppID y coloca entradas en el registro que asignan appID al nombre del ejecutable. Pero algunos servidores COM no proporcionan esta funcionalidad. Sin embargo, si el código de registro del servidor agrega una entrada para HKCR\CLSID{ServerCLSID}\LocalServer32 cuando se ejecuta dcomcnfg.exe, agregará automáticamente un AppID para el CLSID.

Para un cliente COM que no es un servidor, esta asignación no se crea porque el cliente nunca está registrado. Por lo tanto, para establecer la seguridad mediante la clave AppID , el cliente debe crear las entradas del Registro necesarias, ya sea mediante programación mediante las funciones del Registro o mediante regedit.

Si decide establecer la seguridad en todo el proceso en el Registro en la clave AppID , tenga en cuenta que hay dos valores con nombre en la clave appID que puede establecer sin tener permisos de administrador:

Los valores AuthenticationLevel y AccessPermission se establecen de forma independiente y tienen valores predeterminados independientes. Si el valor AuthenticationLevel no está presente, el valor LegacyAuthenticationLevel se usa como valor predeterminado. Del mismo modo, si el valor AccessPermission no está presente, el valor DefaultAccessPermission se usa como valor predeterminado. Sin embargo, los valores AuthenticationLevel y AccessPermission están interrelacionados de las siguientes maneras:

  • Si AuthenticationLevel no es ninguno, los valores AccessPermission y DefaultAccessPermission se omiten para esa aplicación.
  • Si AuthenticationLevel no está presente y LegacyAuthenticationLevel no es ninguno, los valores AccessPermission y DefaultAccessPermission se omiten para esa aplicación.

Configuración de Process-Wide Seguridad