LoginSignup
36
39

More than 5 years have passed since last update.

バッチファイル(*.bat) を管理者として実行するための バッチファイル

Last updated at Posted at 2016-05-26

http://qiita.com/jTakasuRyuji/items/12a0582e085ed91698ab より

バッチファイル単体で管理者昇格からコマンド実行までやりたかったのでカイゼンした。

再帰対応版

runas.cmd
@echo off

REM HINT=http://qiita.com/usagi/items/2623145f22faf54b99e0

cd %~dp0

:checkMandatoryLevel
REM ▼管理者として実行されているか確認 START
for /f "tokens=1 delims=," %%i in ('whoami /groups /FO CSV /NH') do (
    if "%%~i"=="BUILTIN\Administrators" set ADMIN=yes
    if "%%~i"=="Mandatory Label\High Mandatory Level" set ELEVATED=yes
)

if "%ADMIN%" neq "yes" (
    echo このファイルは管理者権限での実行が必要です{Administratorsグループでない}
   if "%1" neq "/R" goto runas
   goto exit1
)
if "%ELEVATED%" neq "yes" (
    echo このファイルは管理者権限での実行が必要です{プロセスが昇格されていない}
   if "%1" neq "/R" goto runas
   goto exit1
)
REM ▲管理者として実行されているか確認 END


:admins
    REM ▼管理者として実行したいコマンド START

    whoami /groups /FO CSV /NH
    pause

    REM ▲管理者として実行したいコマンド END
    goto exit1

:runas
    REM ★管理者として再実行
    powershell -Command Start-Process -Verb runas "%0" -ArgumentList "/R" 

:exit1

無限ループ版(UAC=Noでさらにループ)

runasLoopInfinity.cmd
@echo off

REM HINT=http://qiita.com/usagi/items/2623145f22faf54b99e0

cd %~dp0

:checkMandatoryLevel
REM ▼管理者として実行されているか確認 START
for /f "tokens=1 delims=," %%i in ('whoami /groups /FO CSV /NH') do (
    if "%%~i"=="BUILTIN\Administrators" set ADMIN=yes
    if "%%~i"=="Mandatory Label\High Mandatory Level" set ELEVATED=yes
)

if "%ADMIN%" neq "yes" (
    echo このファイルは管理者権限での実行が必要です{Administratorsグループでない}
    goto runas
)
if "%ELEVATED%" neq "yes" (
    echo このファイルは管理者権限での実行が必要です{プロセスが昇格されていない}
    goto runas
)
REM ▲管理者として実行されているか確認 END

:admins
    REM ▼管理者として実行したいコマンド START

    whoami /groups /FO CSV /NH
    pause

    REM ▲管理者として実行したいコマンド END
    goto exit1

:runas
    REM ★管理者として再実行
    powershell -Command Start-Process -Verb runas "%0" 

:exit1

Powershellのくだりは
http://qiita.com/usagi/items/2623145f22faf54b99e0

を参考にしました。

36
39
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
39