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

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

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

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

Процесс, вызывающий зависание программы, вызывается с помощью:

subprocess.call ('путь _ имя_файла _ опции', shell = False)

1 Ответ

3 голосов
/ 10 ноября 2011

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

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

if shell.IsUserAnAdmin():
   ...

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

Автор Алекс Мартелли

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

import ctypes
print ctypes.windll.shell32.IsUserAnAdmin()
...