远程机器上的c#进程

本文关键字:进程 机器 程机器 | 更新日期: 2023-09-27 17:51:17

我编写了一个监视服务,它跟踪一组进程,并在服务行为异常时发出通知,运行在高内存使用率下,超过CPU运行时间等。

这在我的本地计算机上运行良好,但我需要它指向远程机器并获取这些机器上的进程信息。

我的方法,在本地工作:

Process.GetProcesses().ToList().ForEach(p => MyProcesses.Add(p));

这给了我一个机器上进程的集合,其中有更多的逻辑(按名称过滤进程等),但这就是它的目的。

我需要什么:

Process.GetProcesses(machineName).ToList().ForEach(p => MyProcesses.Add(p));

这显然是对Access的抱怨,问题是我如何通过凭据来使用这个功能?

注意:我有访问这些进程所需的所有机器名和凭据,但我需要在配置文件中提供这些。我可以在指定的用户名中运行服务,但它仍然抱怨访问

远程机器上的c#进程

您需要GetProcesses(string)过载来接受目标机器名称,例如:

Process[] remoteAll = Process.GetProcesses("myComputer");

从文档示例中,您将看到GetProcessBy方法也具有接受目标名称的重载。

在底层,Process类使用WMI访问诸如进程列表之类的管理信息。

对于高级场景,创建一个将返回所需数据的WMI查询(就像数据库一样)可能会更好、更快,而不是枚举远程进程并从每个进程中提取数据。