관리자 권한으로 배치 파일을 자동으로 실행할 수 있습니까?

관리자 권한으로 배치 파일을 자동으로 실행할 수 있습니까?

가능한지 궁금합니다자동으로명령은 관리자 권한으로 실행해야 하기 때문에 배치 파일을 두 번 클릭하면 관리자 권한으로 배치 파일을 열 수 있습니다.

참고: 파일을 마우스 오른쪽 버튼으로 클릭하고 을 클릭하는 해결 방법에 대해 이미 알고 있지만 Run As Administrator자동 해결 방법은 아닙니다.

답변1

예, 관리자 권한으로 배치 파일을 실행할 수 있습니다. 불행하게도 배치 파일 자체에서는 이 작업을 직접 수행할 수 없습니다. 이 작업을 수행하려면 먼저 해당 배치 파일의 바로 가기를 만들고 해당 바로 가기의 속성을 변경해야 합니다.

바로가기를 만드는 방법은 여러 가지가 있지만 가장 간단하고 빠른 방법은 바로가기를 사용하는 것입니다.다음으로 보내기상황에 맞는 메뉴의 옵션.

Right click batch file > Send to > Desktop (create shortcut)

물론 원하는 곳으로 바로가기를 보낼 수도 있습니다. 배치 파일을 관리자 권한으로 실행하려면 다음 단계를 따르세요.

  1. 방금 만든 바로가기를 마우스 오른쪽 버튼으로 클릭하고(바탕 화면이나 보낸 위치에 있어야 함) '속성'을 선택합니다.
  2. 바로가기 탭에서 고급... 버튼을 클릭하세요.
  3. 관리자 권한으로 실행 확인란을 선택하고 모달 창과 기본 속성 창 모두에서 확인을 누릅니다.
  4. 바로가기를 두 번 클릭하여 실행하면 배치 파일이 관리자 권한으로 실행됩니다.

답변2

에 게시된 대로답변Ben Gripka의 또 다른 질문:

REM --add the following to the top of your bat file--


@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"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

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

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------

답변3

윈도우 7에서

  1. 해당 배치 파일에 대한 바로 가기 만들기

  2. 바로가기 파일을 마우스 오른쪽 버튼으로 클릭하세요.

  3. 딸깍 하는 소리사전 버튼관리자로 실행하기 위한 확인란을 찾으려면

아래 스크린샷을 확인해보세요

스크린샷

답변4

내 스크립트 Batch_Admin을 사용하면 모든 유형의 Batch 자체 스크립트, BAT 또는 .CMD에서 사용할 수 있도록 관리자를 자동으로 상승시킬 수 있습니다. 이 기능을 사용하면 표준 도구를 사용하여 다른 Windows 시스템에서도 동일한 방식으로 표준 환경에서 작업할 수 있습니다. 여러 가지 표준 및 내장 Windows 명령을 사용합니다. 다른 외부 스크립트를 사용하지 마십시오. 스크립트 배치뿐만 아니라 모든 프로그램을 관리자로 호출하는 데 사용할 수 있습니다. 작은 스크립트를 만든 다음 관리자 권한이 필요한 프로그램을 호출하는 것으로 충분합니다. 이것을 검색 PATH 폴더(%PATH%에서)에 넣으세요.

이를 사용하려면 관리자로 실행될 상위 배치 스크립트에 다음 줄(정확히)을 삽입하기만 하면 됩니다. 이는 상위 스크립트의 상단에서 수행하는 것이 가장 좋으며 먼저 CALL을 통해 호출되는 일부 하위 스크립트(아래 자세한 설명 참조)를 수행하는 것이 가장 좋습니다.

net session >nul 2>nul&if errorlevel 1  Batch_Admin "%~0" %*

이는 CALL 구문으로 호출되는 모든 하위 스크립트 내에 삽입될 수 있습니다. 아직 관리자 권한이 없는 상태에서 메시지를 표시하려면 다음과 같이 하십시오. Batch_Admin을 호출하기 전에 5초 동안 "ShowAdminInfo" 변수를 초 단위로 설정합니다.

SET ShowAdminInfo=5
net session >nul 2>nul&if errorlevel 1  Batch_Admin "%~0" %*

작동 방식은 다음과 같습니다.

• VBScript를 통해 UAC.ShellExecute를 호출하여 사용자 권한을 가져옵니다.

• Batch는 스크립트, BAT 또는 CMD를 실행합니다.

• 스크립트 호출자는 호출에 따옴표로 묶인 긴 이름 공간을 가질 수 있습니다.

• 마치 호출이 전송되지 않은 것처럼 명령줄에서 전달된 마스터 스크립트를 호출하고 느낌표(!) 및 백분율(%)과 같은 특수 문자를 사용하여 처음부터 시작하는 것처럼 모든 매개변수를 반환합니다. 괄호()

• 이 스크립트가 마스터인 디렉토리에서 호출이 발생한 경우 마스터 스크립트 위치를 보유합니다.

• Auxiliary는 "ShowAdminInfo" 변수를 미리 설정한 경우 메시지를 표시합니다. 이는 추가 정보를 제공하는 관리자의 권리와 정보에 입각한 결정의 가능성이 즉시 전달되는 것을 방지할 수 있는 5초 동안입니다. 설정해야 하는 설정 예: SET ShowAdminInfo=5 기본적으로 이 변수는 정의되어 있지 않으므로 표시되지 않습니다.

• 스크립트는 시스템 검색 경로 % PATH% 및 네트워크 리소스(예: \Computer\share\test.bat)에서도 호출됩니다.

• 스크립트가 거의 동시에 여러 Batch_Admin을 호출할 때 필요한 보조 파일을 작성할 때 오해를 방지합니다. 1부터 100까지의 난수를 사용합니다.

• 하지만 가장 좋은 방법은 상위 스크립트에서 사용하는 것입니다. 관리자 권한으로 전환하려면 항상 스크립트에서 이전에 설정한 변수를 사용하지 않고 새 창, 새 환경에서 스크립트를 완전히 다시 실행해야 하며 이러한 변수의 값은 관리자 권한으로 호출하기 위해 전달되지 않았습니다. . 스크립트가 다시 실행됩니다.

전체 스크립트 Batch_Admin 아래. 이에 대한 자세한 정보는 내 사이트에 있습니다.

다음 텍스트를 메모장에 복사하고 디스크에 Batch_Admin.bat로 저장합니다.

@echo off
if "%~1"=="" (echo *** Batch_Admin ***&echo.&echo Automatically get admin rights for another Batch. See info inside.&TIMEOUT /T 30>nul&goto:eof)

::  A D M I N I S T R A T O R   - Automatically get admin rights for script batch. Paste this on top:    net session >nul 2>nul&if errorlevel 1  Batch_Admin "%~0" %*
::                                Also keep Batch directory localisation and then set variable:   PATH_BAT
::                                if earlier variable "ShowAdminInfo" is empty (not defined) then no info, else showing info with number of seconds
::
::                                Elaboration:  Artur Zgadzaj
setlocal
setlocal DisableDelayedExpansion

SET "Localy="
if exist "%~1"      SET "Localy=YES"
if exist "%~1.BAT"  SET "Localy=YES"
if exist "%~1.CMD"  SET "Localy=YES"
if defined Localy   FOR %%I IN ("%~1") DO SET "PATH_BAT=%%~dI%%~pI"

 SET P1=%~1
 SET Parameters=%*
 SET Parameters=%Parameters:!=^^!%
setlocal EnableDelayedExpansion
 SET Parameters=!Parameters:%P1%=!
 SET Parameters=!Parameters:%%=%%%%!
setlocal DisableDelayedExpansion
 SET Parameters=%Parameters:~3%

net session >nul 2>nul&if not errorlevel 1  goto Administrator_OK

if not defined ShowAdminInfo   goto skip_message_Administrator
echo.
echo Script:  %~1
echo.
echo *****************************************************************
echo ***    R U N N I N G     A S     A D M I N I S T R A T O R    ***
echo *****************************************************************
echo.
echo Call up just as the Administrator. You can make a shortcut to the script and set:
echo.
echo          shortcut ^> Advanced ^> Running as Administrator
echo.
echo     Alternatively run once "As Administrator"
echo     or in the Schedule tasks with highest privileges
echo.
echo Cancel Ctrl-C or wait for launch  %ShowAdminInfo%  seconds ...
TIMEOUT /T %ShowAdminInfo% > nul

:skip_message_Administrator
MD %TEMP% 2> nul
SET /A $Admin$=%RANDOM% * 100 / 32768 + 1

SET "Percent="
del "%TEMP%\$Admin_%$Admin$%_Test.bat" 2>nul
echo %Parameters% > "%TEMP%\$Admin_%$Admin$%_Test.bat"
if not exist "%TEMP%\$Admin_%$Admin$%_Test.bat"  SET Percent=^"
del "%TEMP%\$Admin_%$Admin$%_Test.bat" 2>nul

echo @SET "PATH_BAT=%PATH_BAT%"               > "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"
echo @SET "BatchFullName=%BatchFullName%"    >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"
if defined Localy  (echo @CD /D "%PATH_BAT%" >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat")
echo @"%~1" %Parameters% %Percent% >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"

echo SET UAC = CreateObject^("Shell.Application"^)                                   > "%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
echo UAC.ShellExecute "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat", "", "", "runas", 1 >> "%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
"%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
endlocal
exit /B

:Administrator_OK
"%~1" %Parameters%
goto:eof
REM *** A D M I N I S T R A T O R  - Automatically get admin rights  (The End)  ***

관련 정보