我遇到了已建立的生产.NET2服务的问题。该服务从各种目标计算机收集进程信息和日志文件。它运行在80个站点没有问题;主要在Windows 2000,Windows XP和Windows 2003上。
现在,针对Windows 7目标运行时,只要服务尝试读取进程信息,就会发生异常。
代码如下:
Process[] procs = System.Diagnostics.Process.GetProcesses("10.11.12.13");
信息:目标计算机响应ping并且目标计算机和服务计算机上都存在“adminUser”凭据。
异常信息:
ex {“无法连接到远程计算机。”} System.Exception {System.InvalidOperationException} [System.InvalidOperationException] {“无法连接到远程计算机。”} System.InvalidOperationException
Data {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
InnerException {“无法从性能计数器获取进程信息。”} System.Exception {System.InvalidOperationException} [System.InvalidOperationException] {“无法从性能计数器获取进程信息。”} System.InvalidOperationException
Data {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
InnerException {“找不到网络路径”} System.Exception {System.ComponentModel.Win32Exception}
消息“无法从性能计数器获取进程信息。”串
来源“系统”字符串
System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName,Boolean isRemoteMachine)中的System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLiblibrary)\ r \ n中的StackTrace“字符串
TargetSite {System.Diagnostics.ProcessInfo [] GetProcessInfos(System.Diagnostics.PerformanceCounterLib)} System.Reflection.MethodBase {System.Reflection.RuntimeMethodInfo}
消息“无法连接到远程计算机”。串
要解决此问题,我在目标计算机上禁用了Windows防火墙,但无济于事。有人有什么想法吗?
如果有人对我应该尝试的步骤和顺序有任何建议,我非常感谢您的帮助。
更新:我从监控计算机执行了“tasklist”命令,传递参数以查询远程(目标)计算机,我能够看到相同类型的过程信息,我无法以编程方式获取。
命令看起来像:
tasklist /s 10.11.12.13
返回的信息如下:
...
notepad.exe 672 1 4,916 K
...
那么,为什么.NET不能看到进程信息???
答案 0 :(得分:7)
原来问题是“远程注册表”服务没有在目标计算机上运行!
这解释了为什么打击防火墙没有效果。感谢所有提供帮助的人。
答案 1 :(得分:1)
是的,尝试将实际的机器名称(而不是IP地址)传递给函数:
Process.GetProcesses("MyMachineName")
您可以在命令提示符下键入ipconfig /all
并查找“主机名”以了解计算机的名称。