python psutil på windows giver adgang nægtet

Indlæg af Hanne Mølgaard Plasc

Problem



os: windows professionelle


Jeg forsøger at bruge psutil til at få en liste over processer og deres cpu-brug, jeg kørte scriptet som administrator og det fejler, når det møder proces DymoPnpService.exe, hvad kan problemet være?


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:UserskrisdigitxDocumentswindowsutil.py", line 13, in <module>
    main()
  File "C:UserskrisdigitxDocumentswindowsutil.py", line 10, in main
    process()
  File "C:UserskrisdigitxDocumentswindowsutil.py", line 7, in process
    print i.name, i.get\_cpu\_percent()
  File "C:Python27libsite-packagespsutil\_\_init\_\_.py", line 330, in get\_cpu\_percent
    pt1 = self.\_platform\_impl.get\_cpu\_times()
  File "C:Python27libsite-packagespsutil\_psmswindows.py", line 125, in wrapper
    raise AccessDenied(self.pid, self.\_process\_name)
AccessDenied: (pid=1832, name='DymoPnpService.exe')


Mere forskning:


mærkeligt jeg kan køre programmet fra Windows-kommandoprompten ... men det fejler i python ideen

Bedste reference


Kør dette i en cmd.exe-prompt: tasklist /FI "IMAGENAME eq DymoPnpService.exe" /V og kontroller 'Brugernavn'. Hvis det er 'NT AUTORITY \ SYSTEM', er det sandsynligvis ikke bevidst at tillade selv en administratorkonto at få CPU-tider,\%, osv. Af proc.


Tag en kopi af Process Explorer og find vej af processen og kontroller sikkerhedsfanen i indstillingerne med højreklik på menuen. For at rette dig kan være i stand til at redigere ejeren eller tilladelserne i DymoPnpService.exe-kørslen, men det kan medføre uventede problemer i Windows. [5]





Du kan også bare fortsætte sløjfen, hvis processen ikke giver dig mulighed for at få oplysninger om det:


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()

Andre referencer 1


Start fra version 0.6.0 psutil på Windows vil ikke længere rejse AccessDenied til forskellige procesmetoder (cpu\_percent () blandt dem):
https://groups.google.com/forum/?fromgroups#!topic/psutil/oxAd0BuAzt0\%5B1-25\%5D[6]