반응형
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 |
---|