Ошибка "AccessDenied" при попытке доступа к процессам в модуле "psutil.process_iter()"

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
Python:
import psutil

for i in psutil.process_iter():
    print(i.username())
При этом методы i.name(), i.exe(), i.cpu_percent(), i.cpu_times(), i.io_counters(), i.memory_info(), i.num_ctx_switches(), i.num_handles(), i.num_threads() работают и выдают информацию обо всех процессах нормально. А вот методы i.username() и i.memory_maps() выдают очень длинный "error":

"
Traceback (most recent call last):
File "C:\Users\LOL\AppData\Local\Programs\Python\Python311\Lib\site-packages\psutil\_pswindows.py", line 688, in wrapper
return fun(self, *args, **kwargs)
File "C:\Users\LOL\AppData\Local\Programs\Python\Python311\Lib\site-packages\psutil\_pswindows.py", line 934, in username
domain, user = cext.proc_username(self.pid)
PermissionError: [WinError 5] Отказано в доступе: '(originated from OpenProcess)'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:/Users/LOL/AppData/Local/Programs/Python/Python311/hgjgjg.py", line 5, in <module>
print(i.username())
File "C:\Users\LOL\AppData\Local\Programs\Python\Python311\Lib\site-packages\psutil\__init__.py", line 706, in username
return self._proc.username()
File "C:\Users\LOL\AppData\Local\Programs\Python\Python311\Lib\site-packages\psutil\_pswindows.py", line 690, in wrapper
raise convert_oserror(err, pid=self.pid, name=self._name)
psutil.AccessDenied: (pid=200)
"
У меня в Win 11 что какие-то "крутые" процессы есть, которые блокируют к себе доступ? Или у меня прав нет?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 580
457
83
И что? Это засоряет ОЗУ? Замедляет программу?
Если возникнет другая ошибка, вы ее тоже перехватите, и потом будете думать как же так, почему работает не так как вы ожидаете

Так вы перехватите только PermissionError, остальные перехватываться не будут
Python:
try:
    exe = i.exe()
except PermissionError:
    exe = 'path_denied'
 
  • Мне нравится
Реакции: Malenkey

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 580
457
83
Кстати! Заметил, что чем дольше мой перехватчик процессов резидентным вирусом :) висит в ОЗУ, тем он больше это ОЗУ потребляет. Хотя, те строковые переменные, что используются в моем коде, не думаю, что могут сильно потреблять память. В чем же, интересно, дело?
Ну загляните в исходники модуля, может найдете утечку
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
Я погуглил (иностранные сайты 🧐) и понял! Просто среди общего списка процессов есть системные процессы (System Idle Process, System, Registry), которые отказываются, как настоящие "Штирлицы", выдавать свою подноготную (параметры) и рушат работу программы, выдавая исключение "Access Denied". Поэтому я вышел из положения, введя в программу структуры "try - except":
Python:
try:
    exe = i.exe()
except:
    exe = 'path_denied'
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 580
457
83
Я погуглил (иностранные сайты 🧐) и понял! Просто среди общего списка процессов есть системные процессы (System Idle Process, System, Registry), которые отказываются, как настоящие "Штирлицы", выдавать свою подноготную (параметры) и рушат работу программы, выдавая исключение "Access Denied". Поэтому я вышел из положения, введя в программу структуры "try - except":
Python:
try:
    exe = i.exe()
except:
    exe = 'path_denied'
плохо так делать, вы перехватываете все ошибки...
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
370
107
43
плохо так делать, вы перехватываете все ошибки...
Как для человека, берущего по 400 р за скрипт, сойдёт:D
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
плохо так делать
А как хорошо?
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
вы перехватываете все ошибки
И что? Это засоряет ОЗУ? Замедляет программу?
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
Как для человека, берущего по 400 р за скрипт, сойдет
Там же написано ОТ 400! Да и я еще ни разу 400 рублей за программу не брал!
P.S. Я еще вообще ни разу и нисколько не брал! :ROFLMAO: Похоже, не на той площадке я собою торгую! :unsure:
P.P.S. На студентиках с ихними шизанутыми институтскими заданиями, чую, не разбогатею! 😉
 
Последнее редактирование:

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
370
107
43
Похоже, не на той площадке я собою торгую! :unsure:
есть же для этого сайты где заказчики ищат исполнителей написать проект/небольшой скрипт. И платят поболее 400 р)
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
есть же для этого сайты где заказчики ищат исполнителей
Ты на таких зарегался?
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
остальные перехватываться не будут
А разве могут тут быть еще какие-то исключения? При выполнении
Python:
try:
    exe = i.exe()
разве может быть что-то, кроме PermissionError?
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
Если возникнет другая ошибка, вы ее тоже перехватите, и потом будете думать как же так, почему работает не так как вы ожидаете


Так вы перехватите только PermissionError, остальные перехватываться не будут
Python:
try:
    exe = i.exe()
except PermissionError:
    exe = 'path_denied'
Кстати! Заметил, что чем дольше мой перехватчик процессов резидентным вирусом :) висит в ОЗУ, тем он больше это ОЗУ потребляет. Хотя, те строковые переменные, что используются в моем коде, не думаю, что могут сильно потреблять память. В чем же, интересно, дело?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 580
457
83
А разве могут тут быть еще какие-то исключения? При выполнении
Python:
try:
    exe = i.exe()
разве может быть что-то, кроме PermissionError?
Могут
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
Ну загляните в исходники модуля
Нееееее! :) Я на такое пока смотрю как баран на новые ворота! :D
 

Форум IT Специалистов