バッチファイルからのUAC昇格ダイアログ表示する方法は、インターネット上で公開されているものがいくつかあるが、一時ファイルを作成せず、かつ1ファイルのみで実現しているものがないため、作成した。stackoverflowとTechNet Blogsで公開されている方法を元にしている。純粋にバッチファイルのみで実現する方法はないため、trash-area.comで公開されている方法でWSHと組み合わせて実装した。
elevate.bat
@set @temp=0/*
@echo off
:: Check for Mandatory Label\High Mandatory Level
whoami /groups | find "S-1-16-12288" > nul
if "%errorlevel%"=="0" (
echo Running as elevated user. Continuing script.
) else (
echo Not running as elevated user.
echo Relaunching Elevated: "%~dpnx0" %*
if '%1'=='ELEV' (
shift
) else (
cscript.exe //e:jscript //nologo "%~f0" "%~0"
exit /B
)
)
:: Continue script here
rem Write your own code here ==>
rem Run shell as admin (example)
cmd /k
rem Write your own code here <==
goto :EOF
*/
var UAC = new ActiveXObject("Shell.Application");
UAC.ShellExecute(WScript.Arguments(0), "ELEV", "", "runas", 1);
#参考文献