5 votes

Est-ce un bug ou une fonctionnalité de ManagementScope?

http://msdn.microsoft.com/en-us/library/system.management.connectionoptions.aspx

ConnectionOptions co = new ConnectionOptions();
co.Username = CreateUserName(Domain, Username);

Si j'utilise le code précédent avec ManagementScope comme ceci :

ManagementScope ms = new ManagementScope("\\\\" + PcName + "\\root\\cimv2:Win32_Service='RpcSs'", co);
ms.Connect();

Mais si j'utilise un Domain incorrect, cela fonctionne toujours ? Comment puis-je corriger cela ? Pourquoi cela se produit-il ?

Modifier 1 : Cela se produit (je suis autorisé avec un mauvais domaine et le bon compte Administrateur et le bon mot de passe) lorsque j'essaie d'accéder à une machine distante, qui peut avoir d'autres informations d'identification et un autre domaine que ma machine.

Modifier 2 : Un mauvais domaine dans mon cas signifie : un domaine qui n'existe pas sur cette machine ou un autre domaine dans lequel l'utilisateur actuel n'est pas présent.

Modifier 3 : Même si j'utilise ce code :

options.Authority = "ntlmdomain:DOMAIN";//cela ne fonctionnera pas non plus.

http://msdn.microsoft.com/en-us/library/system.management.connectionoptions.authority.aspx

1voto

Daryn Points 1666

WbemTest est la norme pour savoir comment se comporte WMI. En réponse à votre commentaire (@Floradu88, 15 mai):

1) WbemTest échoue sur les connexions à distance lorsqu'on passe des informations d'identification invalides (domaine invalide).

Ce comportement est bien sûr attendu.

2) WbemTest pour la connexion locale ne fonctionne "qu'en l'absence d'informations d'identification"

Il semble que cela n'ait peut-être pas été inclus dans la documentation pour ManagementScope et ConnectionOptions, mais:

Vous ne pouvez pas changer les informations d'identification en vous connectant à l'ordinateur local.
(MSDN: Tâches WMI : Connexion au service WMI)

Remarques
Ne spécifiez pas strUser, strPassword ou strAuthority lors de la connexion à un espace de noms local.
(MSDN: IWbemLocator::ConnectServer)


Concernant votre question initiale, étant donné que vous avez indiqué que WbemTest se comporte comme prévu, nous savons que WMI "fonctionne" et qu'il ne s'agit pas d'un problème isolé tel que la machine cible ayant été configurée pour accepter des connexions anonymes.

Une possibilité est que votre connexion WMI en C# utilise les informations d'identification de l'utilisateur appelant, plutôt que les informations d'identification spécifiées (invalides). Essayez d'exécuter le même code, mais cette fois en tant qu'utilisateur sur la machine locale dont le compte n'existe pas sur la machine distante. Si cela échoue, cela signifie que les informations d'identification de l'appelant ont été utilisées à la place des informations d'identification explicites que vous vouliez. Ce qui, s'il s'est produit, suggérerait une erreur dans votre implémentation des appels pour se faire passer pour les informations d'identification manuellement spécifiées lors de la connexion à la machine distante.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X