Как определить, требуются ли повышенные привилегии для запуска процесса без проверки по ошибке
Как мне проверить, требуется ли повышение привилегий для запуска подпроцесса, не пытаясь сначала выполнить, а затем завершить сбоем?
Мне нужно запустить команду подпроцесса из кода 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()