这是一个错误还是ManagementScope的一个功能

本文关键字:一个 功能 ManagementScope 错误 | 更新日期: 2023-09-27 18:13:21

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

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

如果我将以前的代码与ManagementScope一起使用,如下所示:

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

但如果我使用了不正确的域名,它仍然有效吗?我该如何更正。为什么会发生这种情况?

编辑1:当我尝试访问远程计算机时,会发生这种情况(允许我使用错误的域、正确的管理员帐户和正确的密码(,该计算机可能具有其他凭据和其他域,而不是我的计算机。

编辑2:在我的情况下,坏域意味着:在该机器上不存在的域或当前用户输入的其他域不存在。

编辑3:即使我使用这个代码:

options.Authority = "ntlmdomain:DOMAIN";//this won't work either.

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

这是一个错误还是ManagementScope的一个功能

WbemTest是了解WMI行为的标准。回应您的评论(@Floradu88,5月15日(:

1( WbemTest在远程连接上传递无效凭据(无效域(时失败

这是预期的行为,当然是

2( 本地连接的WbemTest"仅在没有凭据的情况下"工作

看起来这可能没有渗透到ManagementScope和ConnectionOptions的文档中,但是:

连接到本地计算机时无法更改凭据
(MSDN:WMI任务:连接到WMI服务(

备注
连接到本地命名空间时,不要指定strUser、strPassword或strAuthority
(MSDN:IWbemLocator::ConnectServer(


关于您最初的问题,因为您已经说过WbemTest的行为符合预期,我们知道WMI正在"工作",这不是一个边缘情况问题,就像目标机器被配置为接受匿名连接一样。

一种可能是您的C#WMI连接使用的是调用用户的凭据,而不是指定的(无效(凭据。请尝试运行相同的代码,但这次是作为本地计算机上的用户,其帐户在远程计算机上不存在。如果失败,则意味着使用了调用者的凭据,而不是您想要的显式凭据。如果发生这种情况,则表明在连接到远程计算机时模拟手动指定凭据的调用的实现中存在错误。