从Windows 7通过Process.GetProcesses(字符串)读取进程信息的异常

Cho*_*let 3 .net c# system.diagnostics windows-7

我在使用已建立的生产.NET2服务时遇到了麻烦.该服务从各种目标计算机收集进程信息和日志文件.它运行在80个站点没有问题; 主要在Windows 2000,Windows XP和Windows 2003上.

现在,针对Windows 7目标运行,只要服务尝试读取进程信息,就会发生异常.

代码如下:

 Process[] procs = System.Diagnostics.Process.GetProcesses("10.11.12.13");
Run Code Online (Sandbox Code Playgroud)

信息:目标计算机响应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}

消息"无法从性能计数器获取进程信息." 串

源"系统"字符串

StackTrace"在System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLiblibrary)\ r \n在System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName,Boolean isRemoteMachine)"string

TargetSite {System.Diagnostics.ProcessInfo [] GetProcessInfos(System.Diagnostics.PerformanceCounterLib)} System.Reflection.MethodBase {System.Reflection.RuntimeMethodInfo}

消息"无法连接到远程计算机".串

要解决此问题,我在目标计算机上禁用了Windows防火墙,但无济于事.有人有主意吗?


如果有人对我应该尝试的步骤和顺序有任何建议,我非常感谢你的帮助.


更新:我从监控计算机执行了"tasklist"命令,传递参数以查询远程(目标)计算机,我能够看到相同类型的过程信息,我无法以编程方式获取...

该命令看起来像:

tasklist /s 10.11.12.13
Run Code Online (Sandbox Code Playgroud)

返回的信息如下:

...  
notepad.exe                    672                            1      4,916 K
...  
Run Code Online (Sandbox Code Playgroud)

那么,为什么.NET不能看到进程信息???

Cho*_*let 7

原来问题是"远程注册表"服务没有在目标计算机上运行!

这解释了为什么打击防火墙没有效果.感谢所有提供帮助的人.