【问题标题】:Trying to remotely access through wmi using C#尝试使用 C# 通过 wmi 远程访问
【发布时间】:2013-03-20 13:46:05
【问题描述】:

我有这段代码:

private ManagementScope CreateNewManagementScope(string server)
    {
        string serverString = "\\\\" + server + "\\root\\cimv2";

        ConnectionOptions options = new ConnectionOptions();
        options.Username = "name";
        options.Password = "password";

        ManagementScope scope = new ManagementScope(serverString, options);
        scope.Connect();

        return scope;
    }

使用该代码,我正在尝试通过 WMI 远程访问另一台 PC。密码和用户名 100% 正确(我使用 wmic /node:pc /username:name /password:pwd 对其进行了测试,这有效)但我被拒绝访问

(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))

任何想法我做错了什么?我正在使用 Win 7/C#/.NET 4.0 感谢您的帮助!

【问题讨论】:

  • 您是在域上还是在其他任何地方?您可能必须在用户名中指定您的域名,或者如果您这样做,您可能不需要等,还要检查您的密码是否有可能无法转义的特殊字符。
  • 好吧,我尝试了 domain\\user (双 \\ 因为转义),但没有奏效。密码只有一个点,但没有其他特殊内容。我真的不明白为什么这不起作用。
  • 您尝试访问另一台电脑的帐户是否具有足够的连接权限?例如 IE 是网络管理员吗?
  • 作为同一个用户,您可以访问远程机器的事件日志吗?我的意思是虽然事件查看器。

标签: c# .net wmi remote-access


【解决方案1】:

您可以尝试使用管理员凭据:

string serverString = @"\\" + strIPAddress + @"\root\cimv2"

【讨论】:

  • 不起作用..在我寻找帮助文章之前尝试过这个..感谢您的尝试:)
【解决方案2】:

检查其他机器安全事件日志上记录的内容,因为它会为您提供有关访问权限问题的线索。

我很确定您可以在查看 TechNet 文章 "Connecting to WMI Remotely Starting with Windows Vista" 和相关文章后解决该问题。具体这部分: "Setting DCOM Security to Allow a User to Access a Computer Remotely".

【讨论】:

    【解决方案3】:

    检查Services+(高级 Windows 服务管理器)的代码包含您需要的关于 WMI Win32_Service 的所有内容。

    排除故障或调试:

    1. 确保计算机和服务器在同一个域中
    2. 删除您的代码凭据并从您的代码中生成一个 EXE,然后运行 EXE 作为特权用户。
    3. 使用Services+(如上所述)或Services.msc 连接到 服务器。
    4. 确保 RPC 服务正在远程服务器上运行。
    5. 尝试暂时关闭服务器上的防火墙。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-26
      • 2017-03-01
      • 1970-01-01
      • 2014-06-03
      • 2011-07-01
      • 1970-01-01
      • 2012-07-09
      相关资源
      最近更新 更多