2011-06-25 35 views
0

我正在编写一个小程序来检索运行在远程计算机上的服务和进程列表,所有程序运行良好。我正在使用Process进程列出进程和ServiceController以获取服务列表。无论如何,要获得在远程PC上运行的进程的大小,并实际找到与进程相关的文件的大小?远程计算机上的进程信息

回答

1

要执行远程管理功能,通常正确的答案是使用WMI。

并使用System.Management中的类型与.NET中的WMI进行交互。 This page包括一个简单的例子。

我会建议使用WMI为远程和本地信息—避免两组代码来维护。

+0

谢谢,我正在研究您提出的方法! –

+0

我试图获取安装日期属性,但它总是检索为空! –

+0

@Aadi:此处始终为空。该文档说:“该对象可能没有值被写入该属性安装”,并且我注意到'InstallDate'继承自'CIM_ManagedSystemElement',它具有许多其他'InstallData'更有意义的子类。 – Richard

1

命令提示符上的任务列表和任务视图功能也可以帮助执行此操作。你的程序可以在一个过程对象中运行cmd.exe并输入

tasklist /s remoteServer /u userName 

作为输入,然后监听输出。它会要求输入密码作为下一个输入。然后您可以监听连续的输出,直到达到EndOfOutput。

或者,如果您有权访问远程计算机,则可以使用Process.GetProcesses()函数返回正在运行的进程列表的方法,从而编写托管WCF服务的Windows窗体程序或控制台应用程序,远程计算机。在程序中使用服务客户端,可以调用远程方法。

以上两种方法中的任何一种都不需要使用WMI就行了,我想。