2017 년 현재이를 달성하는 쉬운 방법은 다음과 같습니다.
import ctypes, sys
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
if is_admin():
else:
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1)
Python 2.x를 사용하는 경우 다음의 마지막 줄을 바꿔야합니다.
ctypes.windll.shell32.ShellExecuteW(None, u"runas", unicode(sys.executable), unicode(" ".join(sys.argv)), None, 1)
또한 실행 파일로 당신에게 파이썬 스크립트를 변환하면 있습니다 (같은 도구를 사용하여는 py2exe
, cx_freeze
, pyinstaller
) 당신은 사용해야하는 sys.argv[1:]
대신 sys.argv
네 번째 매개 변수에.
여기에 몇 가지 장점은 다음과 같습니다.
- 외부 라이브러리가 필요하지 않습니다. 그것은 단지 용도
ctypes
및 sys
표준 라이브러리에서.
- Python 2와 Python 3 모두에서 작동합니다.
- 파일 리소스를 수정하거나 매니페스트 파일을 만들 필요가 없습니다.
- if / else 문 아래에 코드를 추가하지 않으면 코드가 두 번 실행되지 않습니다.
- 마지막 줄에서 API 호출의 반환 값을 가져와 실패 할 경우 조치를 취할 수 있습니다 (코드 <= 32). 여기에서 가능한 반환 값을 확인 하십시오 .
- 여섯 번째 매개 변수를 수정하여 생성 된 프로세스의 표시 방법을 변경할 수 있습니다.
기본 ShellExecute 호출에 대한 문서는 여기에 있습니다 .