C# 从远程计算机检索进程信息和文件

C# 从远程计算机检索进程信息和文件,c#,remote-access,C#,Remote Access,我正在尝试使用以下代码检索特定进程: Process[] Process = Process.GetProcessesByName(_ProcessName, _Ip); 当\u Ip为“127.0.0.1”时,将成功检索该进程。 当\u Ip表示远程机器时,会发生以下异常: System.InvalidOperationException occurred HResult=-2146233079 Message=Couldn't connect to remote machine.

我正在尝试使用以下代码检索特定进程:

Process[] Process = Process.GetProcessesByName(_ProcessName, _Ip);
\u Ip
为“127.0.0.1”时,将成功检索该进程。 当
\u Ip
表示远程机器时,会发生以下异常:

System.InvalidOperationException occurred
  HResult=-2146233079
  Message=Couldn't connect to remote machine.
  Source=System
  StackTrace:
       at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine)
       at System.Diagnostics.ProcessManager.GetProcessInfos(String machineName)
       at System.Diagnostics.Process.GetProcesses(String machineName)
       at System.Diagnostics.Process.GetProcessesByName(String processName, String machineName)
       at ToisSimulator.ToisResultsCollector.CollectResults() in d:\PI2\ThirdParty\TCC_New\TccMediator\ToisSimulator\ToisResultsCollector.cs:line 101
  InnerException: System.InvalidOperationException
       HResult=-2146233079
       Message=Couldn't get process information from performance counter.
       Source=System
       StackTrace:
            at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib library)
            at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine)
       InnerException: System.ComponentModel.Win32Exception
            HResult=-2147467259
            Message=Access is denied
            Source=System
            ErrorCode=-2147467259
            NativeErrorCode=5
            StackTrace:
                 at System.Diagnostics.PerformanceMonitor.Init()
                 at System.Diagnostics.PerformanceCounterLib.GetPerformanceData(String item)
                 at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib library)
            InnerException:
我试着做到以下几点:

  • 在两台计算机之间Ping–成功

  • 取消远程计算机上的防火墙

  • 在两台计算机上启用并启动“远程注册表”服务

  • 检索进程的目的是查找其目录路径,并使用以下代码行读取位于该目录中的日志文件:

    FileStream fStream = new FileStream(fileInfo.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
    
    希望你已经试过了 . 它说正确的方法是使用
    WMI

    这个链接有一个很好的例子,它使用
    System.Management
    连接到远程系统并获取流程详细信息