【发布时间】:2011-06-25 05:52:30
【问题描述】:
我正在编写一个小程序来检索远程计算机上运行的服务和进程的列表,一切运行良好。我将 Process 用于 ret 进程列表和 ServiceController 用于服务列表。现在有没有办法获取远程 pc 上正在运行的进程的大小并实际找到与该进程关联的文件的大小?
【问题讨论】:
标签: c# .net visual-studio-2010
我正在编写一个小程序来检索远程计算机上运行的服务和进程的列表,一切运行良好。我将 Process 用于 ret 进程列表和 ServiceController 用于服务列表。现在有没有办法获取远程 pc 上正在运行的进程的大小并实际找到与该进程关联的文件的大小?
【问题讨论】:
标签: c# .net visual-studio-2010
要执行远程管理功能,通常正确的答案是使用 WMI。
Win32_Process 进程信息类。Win32_Service 服务类。并使用 System.Management 中的类型从 .NET 与 WMI 进行交互。 This page 包含一个简单的示例。
我建议将 WMI 用于远程和本地信息——避免维护两组代码。
【讨论】:
InstallDate 继承自 CIM_ManagedSystemElement,它有许多其他子类,InstallData 更有意义。
命令提示符上的任务列表和任务视图功能也可以帮助执行此操作。您的程序可以在进程对象中运行 cmd.exe 并输入
tasklist /s remoteServer /u userName
作为输入,然后监听输出。它将要求输入帐户的密码,该密码应作为下一个输入提供。然后,您可以监听连续的输出,直到达到 EndOfOutput。
或者,如果您可以访问远程计算机,您可以编写一个 Windows 窗体程序或控制台应用程序,该程序托管一个 WCF 服务,其方法使用 Process.GetProcesses() 返回正在运行的进程列表,该方法将在远程计算机。在您的程序中使用服务客户端,您可以调用远程方法。
我猜以上两种方法都可以在不使用 WMI 的情况下工作。
【讨论】: