1

我有这段代码:

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 感谢您的帮助!

4

3 回答 3

0

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

string serverString = @"\\" + strIPAddress + @"\root\cimv2"
于 2013-03-20T14:30:32.310 回答
0

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

我很确定您可以在查看 TechNet 文章“使用 Windows Vista 远程连接到 WMI”和相关文章后解决该问题。特别是这部分: “设置 DCOM 安全性以允许用户远程访问计算机”

于 2013-04-10T13:56:18.997 回答
0

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

要进行故障排除或调试:

  1. 确保计算机和服务器在同一个域中
  2. 删除您的代码凭据并在您的代码中创建一个 EXE,然后以特权用户身份运行该 EXE。
  3. 使用Services+(如上所述)或 Services.msc 连接到服务器。
  4. 确保 RPC 服务正在远程服务器上运行。
  5. 尝试暂时关闭服务器上的防火墙。
于 2014-12-30T11:15:07.657 回答