Проверка, запущен ли python-скрипт от имени администратора

В коде имеется скрипт, работающий только от имени администратора и если запустить его просто так, то все остальное, что делает код, будет бесполезно без этого скрипта. Поэтому мне надо, чтобы при запуске приложения проверялось, запущено ли оно от имени администратора, и если нет - запуск должен отмениться и вылететь ошибка.

Я сделал это следующим образом:

import os
import ctypes
from tkinter import messagebox as mb

def is_admin():
   try:
     return os.getuid() == 0
   except AttributeError:
     return ctypes.windll.shell32.IsUserAnAdmin() != 0

if is_admin == True:
   #запуск скрипта
else:
   mb.showerror('Ошибка','Запустите от имени администратора')

Однако у меня при запуске, что от имени админа, что без него, появляется ошибка (мое сообщение) В чем проблема?


Ответы (1 шт):

Автор решения: Эникейщик

Не хватает скобок, нужно так

if is_admin() == True:

А ещё лучше так

if is_admin():

Избавиться от второго окна можно добавив строчки:

root = tkinter.Tk()
root.withdraw()
mb.showerror('Ошибка','Запустите от имени администратора')
→ Ссылка