【问题标题】:Is this a bug or a feature of ManagementScope?这是 ManagementScope 的错误还是功能?
【发布时间】:2013-05-08 15:27:44
【问题描述】:

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

【问题讨论】:

  • 为什么不呢?假设您尝试连接到“\\pc-of-my-boss\documents”,系统将提示您输入您的凭据(它们可以是本地用户、域或目标计算机上允许的任何内容)。如果您提供错误的凭据,您将无法登录。
  • 是的,但是即使凭据(尤其是域错误),我也可以做很多事情,例如重新启动。
  • 不,除了用户可以做的事情(根据他在目标机器上的权限)减去策略允许的事情(尤其是在域中)之外,您将无法做更多的事情。
  • "...发生这种情况..."会发生什么?
  • “坏域”是什么意思?目标机器不存在的域?随机域名?您在 CreateUserName() 函数中究竟做了什么?如何拥有有效的管理员帐户(用户名 + 密码)但域错误(用户可以是本地用户或域用户,但他们必须存在于某个地方)。

标签: c# wmi rpc


【解决方案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 连接正在使用调用用户的凭据,而不是指定的(无效)凭据。请尝试运行相同的代码,但这次以本地计算机上的用户身份运行,其帐户在远程计算机上不存在。如果失败,则意味着正在使用调用者的凭据,而不是您想要的显式凭据。如果发生这种情况,则表明您在连接到远程计算机时模拟手动指定凭据的调用实现错误。

【讨论】:

    猜你喜欢
    • 2015-01-20
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多