J'ai une application C# qui se connecte via WMI à de nombreux systèmes distants, à la fois dans un domaine et en mode autonome. Le programme fournit à WMI des informations d'identification et utilise l'impersonnalisation. Lorsqu'il est exécuté manuellement (à partir d'une console), il se connecte correctement et tout va bien. Cependant, lorsque ce même .exe est appelé depuis un service (exécuté en tant qu'utilisateur local), il obtient toujours 0x80070005 (E_ACCESSDENIED) lorsqu'il appelle Connect() sur le ManagementScope.
J'ai fait de nombreuses recherches et trouvé de nombreux articles apparemment utiles sur des sujets similaires, mais aucun ne fonctionne. Celui-là et son [post ultérieur][2] sur le site de MS est très similaire, sauf que mon échec se produit à la connexion, et non lors de l'exécution d'une requête, ce qui semble être un problème de permission du système local.
J'ai modifié les autorisations DCOM, les autorisations de remoting WMI, les options d'impersonnalisation, les options de stratégie, le pare-feu Windows, entre autres, mais sans résultat. Y a-t-il quelqu'un qui puisse m'aider ?
Edit : En creusant un peu plus, j'ai trouvé cette petite page de MS, qui indique vraiment que mon erreur (0x80070005) est un problème DCOM qui se produit pendant la connexion, et pas spécifiquement une erreur WMI. Les causes qu'ils donnent sont 1. Échec de l'authentification, ou 2. Permissions de lancement/activation à distance de DCOM. Puisque mon programme fonctionne lorsqu'il est exécuté manuellement avec les mêmes informations d'identification, je dois supposer que c'est un problème DCOM. J'ai configuré l'activation et le lancement à distance/local pour autoriser SYSTEM, LOCAL SERVICE, INTERACTIVE et Administrateurs, mais cela échoue toujours. Comme le service est exécuté en tant que système local, je suppose que ces paramètres devraient suffire.