배치 파일을 두 번 클릭하면 명령이 관리 권한으로 실행되어야하기 때문에 배치 파일을 관리자 로 자동으로 열 수 있는지 궁금합니다 .
참고 : 파일을 마우스 오른쪽 버튼으로 클릭하고을 클릭하는 방법에 대해 이미 알고 Run As Administrator
있지만 자동 솔루션은 아닙니다.
배치 파일을 두 번 클릭하면 명령이 관리 권한으로 실행되어야하기 때문에 배치 파일을 관리자 로 자동으로 열 수 있는지 궁금합니다 .
참고 : 파일을 마우스 오른쪽 버튼으로 클릭하고을 클릭하는 방법에 대해 이미 알고 Run As Administrator
있지만 자동 솔루션은 아닙니다.
답변:
예, 관리자 권한으로 배치 파일을 실행할 수 있습니다. 불행히도 배치 파일 자체에서 직접 수행 할 수는 없습니다. 이 작업을 수행하려면 먼저 해당 배치 파일의 바로 가기를 만들고 해당 바로 가기의 속성을 변경해야합니다.
바로 가기를 만들려면 여러 가지 방법이 있지만 가장 간단하고 빠른 방법은 상황에 맞는 메뉴에서 보내기 옵션 을 사용하는 것 입니다.
Right click batch file > Send to > Desktop (create shortcut)
물론 원하는 곳으로 바로 가기를 보낼 수 있습니다. 배치 파일을 관리자 권한으로 실행하려면 다음 단계를 수행하십시오.
if "%~1" == "" start %USERPROFILE%\Desktop\Shortcut.lnk && GOTO :EOF
바로 아래에 무언가를 삽입 @echo off
하고 바로 가기 program.bat a
대신 링크를 만드십시오 program.bat
.
다른 질문에 대한 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"
:--------------------------------------
받아 들여진 대답은 실제로 작동합니다. 그러나 Windows 7에서는 바로 가기를 누를 때마다 UAC 대화 상자를 견뎌야한다는 것을 알았습니다. 이 IMHO는이 질문의 "자동"과는 크게 다릅니다!
그런 다음 내 상황 .bat
에서 문제 의 파일이 작업 스케줄러에서 실행 된다는 것을 알았습니다 . 이 경우 작업 탭 에서 Run with highest privileges
옵션을 확인 General
하면 문제를 잘 처리 할 수 있습니다. 은 .bat
다음 번거 로움없이 관리자 권한으로 실행됩니다.
추신 : 나는이 답변에 이미지를 업로드 할 수 없다는 것을 알지 못했습니다. 왜냐하면 지금 나와 함께 앉아있는 멋진 작은 스크린 샷이 있기 때문입니다! 아니면 할 수 있습니까?
내 스크립트 Batch_Admin을 사용하여 모든 유형의 Batch 자체 스크립트 또는 BAT 또는 .CMD에서 사용할 수 있도록 관리자를 자동으로 상승시킬 수 있습니다. 이 기능은 표준 도구를 사용하여 다른 Windows 시스템에서와 같은 방식으로 표준 환경에서 작업 할 수 있도록합니다. 여러 표준 및 내장 Windows 명령을 사용합니다. 다른 외부 스크립트를 사용하지 마십시오. 스크립트 배치뿐만 아니라 모든 프로그램을 관리자로 호출하는 데 사용할 수 있습니다. 작은 스크립트를 작성하면 Administartor 권한이 필요한 프로그램을 호출 할 수 있습니다. 검색 경로 폴더 (% 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를 호출하여 사용자 권한을 가져옵니다.
• 배치는 스크립트 또는 BAT 또는 CMD를 실행합니다.
• 스크립트 호출자는 호출에 긴 이름 공간을 따옴표로 묶을 수 있습니다.
• 호출이 전송되지 않은 것처럼 명령 줄에서 전달 된 마스터 스크립트를 호출하는 모든 매개 변수를 반환하고 느낌표 (!) 및 백분율 (%)과 같은 특수 문자를 사용하여 처음부터 무언가를 시작합니다. 괄호 ()
•이 스크립트가 마스터 인 디렉토리에서 호출이 발생한 경우 마스터 스크립트 위치를 유지합니다.
• 보조 변수 앞에 "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) ***
@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
chkdsk
이것은 소스 도 작동합니다 : https://social.technet.microsoft.com/Forums/windows/en-US/bc8a4561-d97e-4339-9b1c-9b90e54a7f92/request-elevation-inside-cmdbatch-file
명령 줄 유틸리티를 사용할 수 있습니다 elevate
. (다운로드 링크-https: //drive.google.com/open ? id=0Bz7qe_olclTwVGZLUklFMHNxQ00 )
Usage: Elevate [-?|-wait|-k] prog [args]
-? - Shows this help
-wait - Waits until prog terminates
-k - Starts the the %COMSPEC% environment variable value and
executes prog in it (CMD.EXE, 4NT.EXE, etc.)
prog - The program to execute
args - Optional command line arguments to prog
박쥐를 관리자로 실행하는 예입니다. 그것은 나를 위해 작동합니다.
다음과 같이 진행됩니다.
if "%~s0"=="%~s1" ( cd %~sp1 & shift ) else (
echo CreateObject^("Shell.Application"^).ShellExecute "%~s0","%~0 %*","","runas",1 >"%tmp%%~n0.vbs" & "%tmp%%~n0.vbs" & del /q "%tmp%%~n0.vbs" & goto :eof
)
:eof
start Cmd /k "netsh wlan show profile"
pause </
cls
Color 0A
@echo off
echo.
cls
set/p ProfileName=Type the name of the current Wifi signal?
echo.
start Cmd /k "netsh wlan show profile name=%ProfileName% key=clear"
pause </
exit
pause