Как определить, требуются ли повышенные привилегии для запуска процесса без проверки по ошибке

Как мне проверить, требуется ли повышение привилегий для запуска подпроцесса, не пытаясь сначала выполнить, а затем завершить сбоем?

Мне нужно запустить команду подпроцесса из кода Python. В некоторых случаях это работает нормально, в других случаях оказывается, что требуются повышенные привилегии; и в некоторых системах Windows это условие вызывает зависание моей программы.

Я хотел бы определить, требуется ли повышение привилегий, не пытаясь сначала запустить подпроцесс и перехватить / перехватить любое состояние ошибки.

Процесс, который вызывает зависание программы, вызывается;

subprocess.call ('path _ filename _ options', shell = False)

1 ответ

С pywin32 должно работать что-то вроде следующего:

import pythoncom
import pywintypes
import win32api
from win32com.shell import shell

if shell.IsUserAnAdmin():
   ...

И да, кажется, что Pywin32 действительно поддерживает Python 3.

Автор Alex Martelli

Также это для людей без pywin32.

import ctypes
print ctypes.windll.shell32.IsUserAnAdmin()
Другие вопросы по тегам