从远程机器检索进程信息和文件
本文关键字:进程 检索 信息 文件 机器 程机器 | 更新日期: 2023-09-27 18:26:15
我正在尝试使用以下代码检索特定进程:
Process[] Process = Process.GetProcessesByName(_ProcessName, _Ip);
当_Ip
为"127.0.0.1"时,进程检索成功。当_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
连接到远程系统并获取流程详细信息。