CMD 관리자 권한으로 실행 여부 체크하기
배치파일 작성 시 관리자 권한이 필요한 프로그램을 실행시켜야하는 경우가 있습니다.
해당 코드가 실행되기 전에 미리 관리자 권한으로 실행 되었는지 체크하여
관리자 권한으로 실행되지 않았다면 아에 배치파일이 동작하지 않도록 만드는게
정신 건강에 이롭더군요.
아래 코드는 관리자 권한으로 실행했는지 체크하고
관리자 권한이 아니면 프로그램을 메시지를 보여주고 배치파일을 종료 시키는 코드입니다.
@echo off
title 관리자 권한으로 배치파일 실행 했는지 확인하기
bcdedit >>nul
if %errorlevel% == 1 goto noadmin
echo ★ 관리자 권한으로 실행하였습니다.
pause
exit
:noadmin
cls
color 1F
echo.
echo.
echo.
echo.
echo ★ 관리자 권한이 아닙니다!
echo ★ 오른쪽 마우스 클릭해서 관리자 권한으로 실행해주세요.
pause
exit
위 코드에서 중요한 부분은
bcdedit >>nul
if %errorlevel% == 1 goto noadmin
이 부분이겠군요.
bcdedit 는 부트로더 관리 프로그램인데
이 프로그램은 부팅 관련을 건들기 때문에 관리자 권한이 필수입니다.
그래서 bcdedit 명령어를 치고 그 결과값을 nul로 표시하도록 처리하여
해당 명령어 실행 여부를 가지고 관리자 권한으로 배치파일이 실행되었는지 확인할 수 있습니다.
if 구문에서 %errorlevel%은 if 구문 바로 직전에 실행된 명령어의 실행 결과값을 0과 1로 표시해주는데요.
에러가 발생하면 1로 에러가 없이 정상적으로 명령어가 작동했으면 0으로 표시됩니다.
관리자 권한이 없어서 bcdedit가 실행되지 않았다면 당연히 에러가 발생한것이므로 1로 표시됩니다.
if구문에서는 errorlevel이 1이라면 goto noadmin 이라는 위치로 보내버립니다.
goto를 통해 :noadmin 다음줄 부터 구문이 시작되도록 명령 실행 위치가 바뀝니다.
그래서 결국 if 구문과 :noadmin 사이에 있는 echo ★ 관리자 권한 ~ exit 까지의 명령줄은 실행되지 않고
:noadmin 다음에 있는 cls 구문 부터 실행되는겁니다.
설명이 어려웠는데
대략적으로 코드 보시고 따라하시면 이해 되실거라 믿습니다.
'개발' 카테고리의 다른 글
CMD 관리자 권한으로 실행 여부 체크하기 (0) | 2020.09.29 |
---|