如何获取仅在我的Windows计算机上运行的进程位置列表

时间:2017-04-02 05:40:16

标签: python

提及: SO Q1SO Q2

我尝试了什么? 在问题中给出的前一个链接中,我尝试执行它,并获得进程名称,进程位置和进程ID。我引用了互联网并修改了SO Q1流行答案中给出的脚本并进行了修改,如此

class GetProcess:
def __init__(self):
    cmd = 'WMIC PROCESS get Commandline'
    proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
    for line in proc.stdout:
        print(line)

当我执行脚本时,我会获得包含奇怪数据的位置,例如

  

b'“C:\ Program Files \ WindowsApps \ Microsoft.Windows.Photos_17.214.10010.0_x64__8wekyb3d8bbwe \ Microsoft.Photos.exe” - ServerName:App.AppXzst44mncqdg84v7sv6p7yznqwssy6f7f.mca

有没有办法单独获取位置而不是运行什么?

我可以看到这可以使用一些第三方库来完成,但我需要知道是否有任何解决方案我可以在没有任何第三方库的情况下获得该过程

1 个答案:

答案 0 :(得分:0)

您想要使用如下命令行:

b'"C:\\Program Files\\WindowsApps\\Microsoft.Windows.Photos_17.214.10010.0_x64__8wekyb3d8bbwe\\Microsoft.Photos.exe" -ServerName:App.AppXzst44mncqdg84v7sv6p7yznqwssy6f7f.mca

还有额外的可执行路径,这是第一部分。看起来你只需要通过查找第一个(可能引用的)字符串来解析它,你可以使用Python中的正则表达式模块re来完成它。

您在字符串周围看到的b'...'包装器表示它在Python 3中属于bytes类型,而不是Unicode。这对Popen()的输出来说是正常的。

顺便说一下,subprocess.check_output()可能更适合您的任务并且更安全。