远程机器上的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的抱怨,问题是我如何通过凭据来使用这个功能?
注意:我有访问这些进程所需的所有机器名和凭据,但我需要在配置文件中提供这些。我可以在指定的用户名中运行服务,但它仍然抱怨访问
您需要GetProcesses(string)过载来接受目标机器名称,例如:
Process[] remoteAll = Process.GetProcesses("myComputer");
从文档示例中,您将看到GetProcessBy
方法也具有接受目标名称的重载。
在底层,Process
类使用WMI访问诸如进程列表之类的管理信息。
对于高级场景,创建一个将返回所需数据的WMI查询(就像数据库一样)可能会更好、更快,而不是枚举远程进程并从每个进程中提取数据。