프로그래밍/파이썬

배치파일을 통해 관리자 권한으로 실행하기

do121 2024. 6. 22. 08:37

pyautogui를 이용해 키를 보내기 위해서는 관리자 권한으로 실행해야함 아래와 같이 배치파일을 이용해 파이썬 파일을 관리자 권한으로 실행한다.

@echo off
:: Check for administrator permissions
net session >nul 2>&1
if %errorLevel% == 0 (
    echo Running with administrator permissions.
) else (
    echo Requesting administrator permissions...
    powershell -Command "Start-Process '%~0' -Verb runAs"
    exit /b
)

:: Place your batch script commands here
echo This batch file is running with administrator permissions.
"C:\Program Files\Python37\python.exe" e:\python\test.py
rem pause

 

 

  • net session 명령을 사용하여 관리자 권한 여부를 확인함. 이 명령은 관리자 권한이 있을 때만 성공적으로 실행되며, 권한이 없는 경우 실패함.
  • >nul 2>&1는 명령의 출력을 숨김. >nul은 표준 출력을, 2>&1는 표준 오류 출력을 숨김.
  • if %errorLevel% == 0은 마지막 명령의 종료 코드가 0인지(성공했는지) 확인함. net session 명령이 성공하면 관리자 권한이 있다는 뜻임.
  • %errorLevel%이 0이면 관리자 권한으로 실행 중임을 표시함.
  • %errorLevel%이 0이 아니면(관리자 권한이 없음), 관리자 권한으로 배치 파일을 재실행함:
    • powershell -Command "Start-Process '%~0' -Verb runAs"는 PowerShell 명령을 사용하여 현재 배치 파일(%~0)을 관리자 권한으로 다시 시작함.
    • exit /b는 배치 파일을 종료함. 관리자 권한 요청 후 원래 배치 파일을 중복 실행하지 않기 위해 필요함.

 

동작 요약
  1. 배치 파일이 실행될 때, net session 명령을 사용하여 관리자 권한이 있는지 확인함.
  2. 관리자 권한이 있으면 "Running with administrator permissions." 메시지를 출력하고, 배치 파일의 나머지 명령을 실행함.
  3. 관리자 권한이 없으면, PowerShell을 사용하여 현재 배치 파일을 관리자 권한으로 재실행하고, 원래 배치 파일의 실행을 종료함.
  4. 관리자 권한으로 실행된 배치 파일은 "This batch file is running with administrator permissions." 메시지를 출력함.