【问题标题】:PerformanceCounter and remote machinePerformanceCounter 和远程机器
【发布时间】:2011-12-31 10:17:14
【问题描述】:

我正在尝试在远程机器上观看 cpu 性能System.Diagnostics.PerformanceCounter 类。 本机为Win7,远程机为Win Server 2008 Web版。计算机不在工作组和/或域中。

如果我为远程机器 new PerformanceCounter("processor", "% Processor Time", "_Total", machineName); 创建性能计数器,我会收到“拒绝访问”异常。

我尝试了Impersonation Sample,但我无法登录到远程机器上的用户。

如何从远程机器获取性能数据? 谢谢。

【问题讨论】:

  • 你能用 perfmon 远程观察这些计数器吗?如果没有,请先让它工作。 “无法登录到远程机器上的用户”——需要详细信息才能说什么。
  • Perfmon 有效。 “登录”方法的错误是“错误的用户名或密码”。但这无关紧要,因为我发现“登录”方法仅适用于本地登录,不适用于远程登录。所以在这种情况下使用它是完全错误的。

标签: c# remote-access performancecounter


【解决方案1】:

我知道这个问题已经很老了,但我刚刚遇到了同样的问题并想分享我的解决方案。该错误基本上是说尝试访问远程计算机的用户的 Windows 凭据不是“性能监视器用户”组的成员。将您的用户添加到此组应该可以解决问题。

【讨论】:

    【解决方案2】:

    您需要使用LOGON32_LOGON_NEW_CREDENTIALS 登录类型而不是LOGON32_LOGON_INTERACTIVE

    【讨论】:

    • 谢谢,它适用于登录功能(+1)!但是 PerformanceCounter 构造函数仍然抛出相同的异常:(
    • 那么您可能没有传递正确的凭据(LogonUser (NEW_CREDENTIALS) 不会检查它们)。你在传递什么域名?如果您模拟的用户帐户不是域帐户,则需要传递远程计算机的名称。
    • 调用类似于:LogonUser("RemoteUserName", "RemoteMachineName", "RemoteUserPassword", LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_DEFAULT, out logonHandle)。但是现在我尝试通过错误的密码,但结果是成功:-O.
    【解决方案3】:

    默认情况下,状态服务将只允许本地到机器的连接。要允许远程连接,您必须将 HKLM\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection 键设置为值“1”。更改 AllowRemoveConnection 键值后,您必须重新启动 State Service 服务才能使更改生效。还要确保您的防火墙允许连接到 State Service 端口(默认为 TCP 42424)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-15
      • 2012-05-11
      • 2014-11-28
      • 2019-07-11
      • 1970-01-01
      • 1970-01-01
      • 2018-08-03
      • 1970-01-01
      相关资源
      最近更新 更多