Windows上的python psutil使访问被拒绝

发布于 2021-01-29 16:24:48

操作系统:Windows Professional

我试图使用psutil来获取进程及其cpu使用情况的列表,我以管理员身份运行了脚本,并且在遇到进程DymoPnpService.exe时失败了,这可能是什么问题?

import psutil

def process():
    plist = psutil.get_process_list()
    plist = sorted(plist, key=lambda i: i.name)
    for i in plist:
        print i.name, i.get_cpu_percent()

def main():
    process()


main()

AcroRd32.exe 0.0 AcroRd32.exe 0.0 DymoPnpService.exe

Traceback (most recent call last):
  File "C:\Users\krisdigitx\Documents\windowsutil.py", line 13, in <module>
    main()
  File "C:\Users\krisdigitx\Documents\windowsutil.py", line 10, in main
    process()
  File "C:\Users\krisdigitx\Documents\windowsutil.py", line 7, in process
    print i.name, i.get_cpu_percent()
  File "C:\Python27\lib\site-packages\psutil\__init__.py", line 330, in get_cpu_percent
    pt1 = self._platform_impl.get_cpu_times()
  File "C:\Python27\lib\site-packages\psutil\_psmswindows.py", line 125, in wrapper
    raise AccessDenied(self.pid, self._process_name)
AccessDenied: (pid=1832, name='DymoPnpService.exe')

更多研究:

奇怪的是我可以从Windows命令提示符运行程序…但是在python IDE中失败

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    在cmd.exe提示符下运行此命令:tasklist /FI "IMAGENAME eq DymoPnpService.exe" /V并检查“用户名”。如果它是“ NT AUTHORITY \ SYSTEM”,则可能有意甚至不允许管理员帐户获取进程的cpu时间,%等。

    获取Process
    Explorer
    的副本,找到流程的路径,然后检查“首选项”的“安全性”选项卡,右键单击菜单选项。要修复,您
    可以 编辑DymoPnpService.exe可执行文件的所有者或权限,但这可能会导致Windows中出现意外问题。


    如果流程不允许您获取有关循环的详细信息,则也可以继续循环:

    import psutil
    
    def process():
        plist = psutil.get_process_list()
        plist = sorted(plist, key=lambda i: i.name)
        for i in plist:
            try:
                print i.name, i.get_cpu_percent()
            except AccessDenied:
                print "'%s' Process is not allowing us to view the CPU Usage!" % i.name
    
    def main():
        process()
    
    main()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看