Objets COM hors processus pour les pilotes WIA
Si un pilote appelle CoCreatInstance (décrit dans la documentation Microsoft Windows SDK) sur un composant hors processus, cet appel échoue, sauf si le composant dispose des autorisations appropriées définies pour autoriser l’accès au pilote.
Pour plus d’informations sur le modèle de sécurité de COM, consultez les livres de programmation COM ou la documentation en ligne. Voici une brève explication.
Deux types d’autorisations sont associés aux composants COM hors processus :
Autorisations de lancement
Les autorisations de lancement indiquent qui est autorisé à démarrer le composant COM s’il n’est pas en cours d’exécution. Par exemple, si le composant est implémenté sur un serveur local qui n’est pas en cours d’exécution, l’appel de CoCreateInstance pour ce composant entraîne une tentative com de lancement du serveur local (en supposant que l’appelant a l’autorisation de le démarrer).
Autorisations d'accès
Les autorisations d’accès indiquent qui est autorisé à appeler ce processus pour récupérer les interfaces COM de ces composants COM.
Les autorisations de lancement et les autorisations d’accès ne doivent pas correspondre. Par exemple, les autorisations de lancement peuvent être définies sur Administrateurs uniquement, mais les autorisations d’accès peuvent être définies sur Utilisateurs et administrateurs interactifs. Ou bien, les administrateurs peuvent être autorisés à démarrer le serveur COM, mais les utilisateurs réguliers ne peuvent utiliser les composants que si le serveur COM était déjà en cours d’exécution.
Une bonne pratique consiste à stocker les autorisations de lancement et d’accès pour vos serveurs COM à l’emplacement approprié sous la sous-clé de Registre AppId du composant. Cela permet aux administrateurs de modifier ces autorisations si nécessaire, à l’aide de l’outil de gestion des services de composants. Pour que votre serveur COM utilise ces autorisations d’accès au moment de l’exécution, veillez à appeler CoInitializeSecurity (décrit dans la documentation du SDK Windows) avec l’indicateur EOAC_APPID, en passant l’AppId du composant. Com accède alors à la sous-clé AppId du composant dans le Registre et utilise les autorisations définies dans les entrées AccessPermission et LaunchPermission .