2011-09-08 83 views
3

操作系统:Windows专业蟒蛇psutil给出拒绝访问

我想使用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

这与Debian有什么关系? – nmichaels

+0

改为windows .. – krisdigitx

+1

我的猜测是,它被执行为SYSTEM – Konrads

回答

5

在cmd.exe提示符下运行此操作:tasklist /FI "IMAGENAME eq DymoPnpService.exe" /V并检查“用户名”。如果它是“NT AUTHORITY \ SYSTEM”,那么它甚至可能故意不允许管理员帐户获取proc的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() 
+0

该服务的安全选项卡中的用户被列为“用户<拒绝访问>”..... – krisdigitx