Objetos COM fuera de proceso para controladores WIA
Si un controlador llama a CoCreatInstance (descrito en la documentación de Microsoft Windows SDK) en un componente fuera del proceso, se producirá un error en esa llamada a menos que el componente tenga los permisos adecuados establecidos para permitir el acceso del controlador.
Consulte los libros de programación COM o la documentación en línea para obtener información detallada sobre el modelo de seguridad de COM. A continuación se muestra una breve explicación.
Hay dos tipos de permisos asociados a componentes COM fuera de proceso:
Permisos de inicio
Los permisos de inicio indican quién tiene permiso para iniciar el componente COM si no se está ejecutando actualmente. Por ejemplo, si el componente se implementa en un servidor local que no se está ejecutando, llamar a CoCreateInstance para ese componente da como resultado QUE COM intente iniciar el servidor local (suponiendo que el autor de la llamada tenga permiso para iniciarlo).
Permisos de acceso
Los permisos de acceso indican quién puede llamar a ese proceso para recuperar las interfaces COM en esos componentes COM.
Los permisos de inicio y los permisos de acceso no tienen que coincidir. Por ejemplo, los permisos de inicio solo se podrían establecer en Administradores, pero los permisos de acceso podrían establecerse en Usuarios interactivos y administradores. O bien, a los administradores se les podría conceder permiso para iniciar el servidor COM, pero los usuarios normales solo podrían usar los componentes si el servidor COM ya se estuviera ejecutando.
Un procedimiento recomendado es almacenar los permisos de inicio y acceso para los servidores COM en el lugar adecuado en la subclave del registro AppId del componente. Esto permite a los administradores cambiar esos permisos si es necesario, mediante la herramienta de administración servicios de componentes. Para que el servidor COM use esos permisos de acceso en tiempo de ejecución, asegúrese de llamar a CoInitializeSecurity (que se describe en la documentación de Windows SDK) con la marca EOAC_APPID, pasando el AppId del componente. Esto hace que COM vaya a la subclave AppId del componente en el Registro y use los permisos establecidos en las entradas AccessPermission e LaunchPermission .