Établissement de la sécurité du processus d’application cliente
Les applications clientes qui appellent des interfaces WMI peuvent contrôler les niveaux de sécurité de leurs processus. Toutes les applications WMI accèdent à WMI via COM, et vous pouvez appeler la fonction COM CoInitializeSecurity pour définir la sécurité de vos processus. Les applications qui effectuent des appels asynchrones à WMI et les applications qui s’inscrivent en tant que consommateurs d’événements définissent des niveaux de sécurité sur l’appel dans WMI.
Si vous n’effectuez pas d’appel explicite à CoInitializeSecurity, COM l’appelle implicitement avec des valeurs du registre. Toutefois, les valeurs de registre peuvent avoir des paramètres inférieurs pour l’emprunt d’identité et l’authentification qui ne fournissent pas la sécurité requise pour WMI. Pour plus d’informations, consultez Définition du niveau de sécurité de processus par défaut à l’aide de C++.
L’accès asynchrone à WMI n’est pas recommandé. Un rappel asynchrone permet à un utilisateur non authentifié de fournir des données au récepteur. Cela pose des risques de sécurité pour vos scripts et applications. Pour éliminer les risques, utilisez la communication semi-synchrone ou synchrone, ou effectuez des vérifications d’accès appropriées dans votre application cliente. Pour plus d’informations, consultez Appel d’une méthode.
Les appels à l’un des proxies WMI (IWbemServices, IEnumWbemClassObject, IWbemCallResult ou IWbemRefresher) utilisent un pointeur hors processus. Pour plus d’informations sur les valeurs par défaut et les suggestions, consultez Définition de la sécurité sur IWbemServices et autres proxies.
La procédure suivante décrit les étapes que vous devez effectuer pour définir la sécurité de WMI sur votre processus d’application.
Pour définir la sécurité de WMI sur votre processus d’application
- Déterminez les niveaux de sécurité requis pour les systèmes d’exploitation Windows sur lesquels votre application cliente s’exécute.
- Appelez la fonction COM CoInitializeSecurity pour définir la sécurité par défaut pour le processus dans lequel l’application cliente s’exécute. Cela déclare le niveau de sécurité requis par d’autres applications pour accéder au processus dans lequel votre application s’exécute.
- Si vous devez modifier la sécurité sur un proxy individuel, par exemple lors d’un autre appel à IWbemServices, appelez CoSetProxyBlanket.
- Si vous avez besoin de contrôler un matériel distant ou un objet système qui nécessite plus de privilèges, utilisez la fonction AdjustTokenPrivileges pour activer les privilèges nécessaires. Notez que vous ne pouvez pas activer un privilège que le processus ne lui a pas déjà attribué. Pour plus d’informations, consultez Vérification de l’accès aux objets privés.
Pour plus d’informations sur la définition du niveau de sécurité du processus par défaut, consultez Définition du niveau de sécurité du processus par défaut à l’aide de C++ et Définition du niveau de sécurité du processus par défaut à l’aide de VBScript.