バッチファイルからUAC昇格ダイアログを表示する

  • 8
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

バッチファイルからのUAC昇格ダイアログ表示する方法は、インターネット上で公開されているものがいくつかあるが、一時ファイルを作成せず、かつ1ファイルのみで実現しているものがないため、作成した。stackoverflowTechNet 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);

参考文献

  1. windows - How can I auto-elevate my batch file, so that it requests from UAC administrator rights if required? - Stack Overflow
  2. Elevation PowerToys for Windows - Site Home - TechNet Blogs
  3. WindowsXP標準機能だけでスリープ(コマンド)の実装 | trash-area.com