使用Python处理信息,不使用wmi,psutil,tasklist

时间:2013-06-06 15:29:26

标签: python command-line process wmi

我正在编写一个Python脚本,用于获取有关在PC上运行的进程(PID,命令行等)的信息。

在我的Windows 7 PC上,我可以使用'wmic'并使用其输出:

output = subprocess.Popen(['wmic process get creationdate,commandline,processid'],stdout = subprocess.PIPE,shell = True).communicate()[0]

我可以从此输出获得的信息示例:

PROCESS PID START TIME COMMAND: blah.exe 1234 Thu Jun 06 15:33:40 2013 C:\ blah \ blah.exe -a -b blah.txt

这给了我所需的所有信息......但是,并非所有机器都会让我使用'wmic',因为我不是管理员。

我可以使用'tasklist',但它没有给我wmic的'命令行'信息。

我不能使用'psutils'(或'wmi'模块),因为它没有安装在我需要它工作的任何PC上,我不想在上面安装管理员安装模块所有这些PC

关于如何使用标准Python 2.6获取上述过程信息的任何想法?

提前致谢, 尼克

Windows XP / 7上的PYTHON 2.6

=============================================== ======================

编辑(2013年6月12日):

我正在尝试按照下面的建议进行操作,但遇到问题...我已将psutil目录(psutil-0.7.1)放在与我的脚本相同的目录中,并将以下内容添加到我的脚本中:

path ='。\ psutil-0.7.1'

sys.path.append(路径)

导入psutil

我现在得到以下错误:

追踪(最近一次呼叫最后一次):

  File "C:\Users\nickw\Desktop\ProcessMonitor\ProcessMonitor_MODPS2.py", line 21, in <module>

    import psutil

  File ".\psutil-0.7.1\psutil\__init__.py", line 77, in <module>

    import psutil._psmswindows as _psplatform

  File ".\psutil-0.7.1\psutil\_psmswindows.py", line 15, in <module>

     import _psutil_mswindows

ImportError: No module named _psutil_mswindows

知道我做错了吗?

1 个答案:

答案 0 :(得分:0)

检索进程命令行的技术有些笨拙,但自XP以来就被包含在WMI中。基本上,它正在读取另一个进程的记忆。参见例如Getting another process command line in Windows以及来自那里的链接以获取详细信息。

所以,你要么

  • 手动重新实施,ctypes或其他任何内容,如上面的链接所示,或者

  • 以某种方式利用现有模块为您做到这一点。有zipimport可以让多个文件更容易,virtualenv可以在文件系统的任何位置创建整个环境,后者可能是一种过度杀伤。