这是ManagementScope的错误还是功能?

时间:2013-05-14 11:10:28

标签: c# wmi rpc

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

1 个答案:

答案 0 :(得分:1)

WbemTest是了解WMI行为的标准。发表评论(@ Floradu88,5月15日):

  

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

这是预期的行为,当然

  

2)本地连接的WbemTest“只有没有凭据”

看起来这可能没有深入到ManagementScopeConnectionOptions的文档中,但是:

  

连接到本地计算机时无法更改凭据   (MSDN:WMI Tasks: Connecting to the WMI Service

  

<强>说明
  在建立与本地名称空间的连接时,请勿指定strUser,strPassword或strAuthority   (MSDN:IWbemLocator::ConnectServer


关于你原来的问题,因为你已经说过WbemTest表现得像预期的那样,我们知道WMI正在“工作”,并且它不是像目标机器被配置为接受匿名连接那样的边缘案例问题。

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