본문 바로가기
IT/Windows

Batch 파일 관리자 권한으로 실행 코드

by 혁이 2021. 9. 9.
반응형

batch 파일을 만들때 오른쪽 -> 관리자 권한으로 실행 으로 안하고 바로 실행해도 관리자 권한을 얻어오고 싶을 때 사용하는 코드입니다.

 

제일 앞에 기입해야 하며

@echo off가 있을 시 @echo off 뒤에 넣어주시면 됩니다.

 

 :: BatchGotAdmin
 :-------------------------------------
 REM  --> Check for permissions
 >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
 if '%errorlevel%' NEQ '0' (
     echo Requesting administrative privileges...
     goto UACPrompt
 ) else ( goto gotAdmin )

:UACPrompt
     echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
     echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
     exit /B

:gotAdmin
     if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
     pushd "%CD%"
     CD /D "%~dp0"
 :--------------------------------------

처음부터 관리자 권한을 가진채로 실행하면 바로 실행되고 아닐 경우 관리자 권한을 묻습니다.

 


예시

 

최초 user List.

 

test.bat 파일

net user test1 /add
pause

결과

스크립트가 관리자 권한으로 실행되지 않았기 때문에 액세스 거부 에러가 발생합니다.

 

 :: BatchGotAdmin
 :-------------------------------------
 REM  --> Check for permissions
 >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
 if '%errorlevel%' NEQ '0' (
     echo Requesting administrative privileges...
     goto UACPrompt
 ) else ( goto gotAdmin )

:UACPrompt
     echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
     echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
     exit /B

:gotAdmin
     if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
     pushd "%CD%"
     CD /D "%~dp0"
 :--------------------------------------

net user test1 /add
pause

이렇게 설정을 하면 batch 파일 실행 시 관리자 권한을 얻어오고 아래 명령어들이 실행됩니다.

 

파일 실행

이렇게 표기되고 '예'를 눌러 관리자 권한을 얻어오면

명령이 잘 실행되고

결과도 잘 나오는 것을 확인할 수 있습니다.

 


감사합니당

반응형

'IT > Windows' 카테고리의 다른 글

Windows 11에서 SSH 서버 설치하기  (0) 2021.10.04