HOWTO · Batch

관리자 권한으로 배치 파일 실행

배치 파일을 한 번 관리자 권한으로 실행하는 방법과 반복 실행을 위해 바로 가기를 설정하는 방법을 알아봅니다.

이 페이지의 내용

배치 파일을 한 번 관리자 권한으로 실행하려면 파일을 마우스 오른쪽 버튼으로 클릭하고 관리자 권한으로 실행을 선택한 다음 사용자 계정 컨트롤(UAC) 프롬프트에서 승인합니다. 수동으로 반복 실행하려면 바로 가기를 만들고 관리자 권한으로 실행 옵션을 활성화하세요. 파일의 명령 중 관리자 권한이 필요한 경우에만 해당 권한을 사용하고, 권한 상승을 승인하기 전에 명령을 검토하세요. 명령이 시스템에 폭넓게 접근할 수 있기 때문입니다. UAC 프롬프트를 승인하는 계정에는 해당 작업의 권한을 높일 수 있는 권한이 있어야 합니다.

바로 가기에서 배치 파일을 관리자 권한으로 실행하기

배치 파일을 마우스 오른쪽 버튼으로 클릭하고 바로 가기 만들기를 선택해 바로 가기를 만듭니다. 바로 가기를 마우스 오른쪽 버튼으로 클릭해 속성을 열고 바로 가기 탭에서 고급을 선택합니다. 관리자 권한으로 실행을 선택하고 대화 상자를 확인한 다음 바로 가기를 실행합니다. Windows는 실행할 때마다 UAC 프롬프트를 표시하므로 권한 상승 실행을 승인하거나 취소할 수 있습니다. 해당 옵션을 사용할 수 없거나 Windows에서 요청을 거부하면 권한 상승을 승인할 수 있는 계정을 사용하거나 장치 관리자에게 접근 권한 설정을 요청하세요.

바로 가기로 배치 파일을 시작하면 현재 디렉터리가 달라질 수 있습니다. 그러면 상대 경로를 사용하는 명령이 잘못된 폴더에서 파일을 찾을 수 있습니다. 배치 파일의 앞부분에 cd /d "%~dp0"를 넣으면 현재 디렉터리를 스크립트가 있는 폴더로 설정할 수 있습니다. %~dp0는 실행 중인 배치 스크립트의 드라이브와 경로로 확장되며, /d는 cd가 디렉터리뿐 아니라 드라이브도 변경하도록 합니다. 이 줄은 작업 디렉터리를 바꿀 뿐 관리자 권한을 부여하지 않습니다. 권한 상승은 바로 가기 설정이 처리합니다.

다음 Python 도우미는 작은 배치 파일 템플릿을 임시 폴더에 저장하고 저장된 줄을 출력하므로, 디렉터리 명령을 직접 스크립트에 넣기 전에 내용을 확인할 수 있습니다.

from pathlib import Path
from tempfile import TemporaryDirectory

with TemporaryDirectory() as folder:
    batch_file = Path(folder) / "sample.bat"
    batch_file.write_text(
        '@echo off\ncd /d "%~dp0"\necho Ready\n',
        encoding="utf-8",
    )
    print(batch_file.read_text(encoding="utf-8"), end="")
@echo off
cd /d "%~dp0"
echo Ready

이 Python 예제는 파일 내용을 만들고 표시할 뿐, Windows 배치 파일을 실행하거나 권한 상승을 요청하지 않습니다. Windows에서 표시된 배치 명령을 실행하려는 스크립트에 저장하세요. 스크립트와 같은 폴더의 파일을 참조하는 명령보다 디렉터리 명령을 앞에 두세요. 대신 스크립트가 절대 경로를 사용한다면 현재 디렉터리에 따라 동작이 달라지지 않습니다.

코드에서 배치 파일을 관리자 권한으로 실행하기

runas 명령은 다른 사용자 계정의 자격 증명을 사용해 프로그램을 시작합니다. 현재 계정에 대해 UAC 권한 상승을 요청하는 일반적인 방법은 아닙니다. 예를 들어 runas /user:DOMAIN\Administrator "cmd.exe /c C:\Scripts\task.bat"는 지정된 계정의 자격 증명을 요청합니다. 계정 이름과 스크립트 경로를 컴퓨터에 맞는 값으로 바꾸세요. 해당 계정에는 필요한 권한이 있어야 하며, runas가 암호를 요청할 수 있습니다. /savecred를 사용하면 자격 증명을 나중에 쓸 수 있도록 저장할 수 있지만, 공유 컴퓨터나 신뢰할 수 없는 컴퓨터에서는 보안상 위험이 따릅니다. 이 명령은 다른 계정으로 실행할 때 사용하세요. 현재 계정의 권한 상승을 승인하려는 경우에는 파일의 컨텍스트 메뉴나 바로 가기 설정을 사용합니다.

배치 파일이 Windows에 권한 상승을 요청하는 별도 도우미를 시작할 수도 있지만, 자체적으로 권한을 높이는 스크립트는 따옴표, 인수, 작업 디렉터리, UAC 요청을 신중하게 처리해야 합니다. 이러한 세부 사항이 여기서 검증되지 않았으므로, 이 글에서는 복사해 사용할 수 있는 VBS 도우미를 제공하지 않습니다. 반복적으로 수동 실행할 때는 바로 가기가 더 간단합니다. 스크립트로 UAC를 조용히 우회할 수는 없습니다. Windows에서는 사용자의 승인이나 이미 승인된 권한 상승 환경이 필요합니다. 실행 절차와 계정 동작은 Windows 환경에 따라 달라지며, 제공된 런타임 환경에서는 실행되지 않았습니다.

결론

한 번 권한을 높여 실행하려면 파일의 컨텍스트 메뉴에서 관리자 권한으로 실행을 선택하세요. 수동으로 자주 실행한다면 바로 가기를 설정하고 %~dp0를 사용해 상대 경로가 스크립트 폴더를 기준으로 하도록 하세요. UAC 프롬프트를 승인하기 전에 배치 명령을 검토하세요. 다른 계정으로 명령을 실행해야 할 때만 runas를 사용하고, UAC 권한 상승 프롬프트의 대안으로 사용하지 마세요. 매번 사람이 승인하지 않아도 작업이 실행되어야 한다면 프롬프트를 숨기거나 우회하려 하지 말고 관리자가 승인한 Windows 관리 방법을 사용하세요.