gpt4 book ai didi

远程计算机上的 C# 进程

转载 作者:太空宇宙 更新时间:2023-11-03 23:36:06 29 4
gpt4 key购买 nike

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

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

我的方法,在 Local 上工作:

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 查询可能更好更快,就像数据库一样,而不是枚举远程进程并从每个进程中提取数据。

关于远程计算机上的 C# 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30569465/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com