Windowsバッチ内でUAC権限昇格のダイアログを表示させる

このエントリーをはてなブックマークに追加
[`yahoo` not found]
[`fc2` not found]
[`livedoor` not found]
このエントリーを Google ブックマーク に追加
Facebook にシェア
LINEで送る

Windowsのバッチファイルにて、regaddコマンドなど特権が必要なものを実行しようとした際に、“管理者として実行”をしていないために実行できない場合があります。
そんな場合は、ユーザが気をつけて“管理者として実行”してくれればいいんですが、世の中には説明をまったく読まない方もいるので、そういう場合の事前策です。

いろいろ調べてみると、VBScriptやPowerShellなどは自分で昇格ダイアログを表示できるようなので、そういったスクリプトで実行してもよかったんですが、さらに調べるとLinuxのsudoコマンドのような形でVBScriptを提供している方がいました。

ファイルの入手先はこちらです。
New Elevation PowerToys for Windows VistaにあるElevation2008_06.exeをダウンロード
The Elevation PowerToys and Windows 7 にあるElevate_Win7beta_fixed.zipをダウンロード

Elevate_UAC_1.pngElevate_UAC_2.png
まず、Elevation2008_06.exeを実行して解凍します。その中にある「elevate.cmd」をコピーします。
次にElevate_Win7beta_fixed.zipを解凍して、「Elevate.vbs」をコピーします。
そしてそれらとともに権限を昇格したいバッチを「Bin」など適当なフォルダに格納します。今回は「install.bat」としています。
最後に、そのバッチをたたく「Setup.bat」を、「Bin」フォルダと同じ場所に設置します。

階層的には次のようなイメージです。

./

├ Setup.bat (昇格ダイアログを出す踏み台バッチ)

└ Bin/

├ elevate.cmd (Elevation2008_06.exeより)

├ Elevate.vbs (Elevate_Win7beta_fixed.zipより)

└ install.bat (昇格して実行したいバッチファイル)

Elevate_UAC_3.pngElevate_UAC_4.png
「Setup.bat」は次のように書いており、単に昇格ダイアログを表示するだけです。
@echo off
cd /d "%~dp0"

Bin\elevate.cmd Bin\install.bat

goto :EOF

こんな感じですれば、後からユーザーアカウント制御に邪魔されることなく、バッチファイルに記載しているコマンドをすべて実行できました。

Windowsサーバー Hacks ―管理者必携のテクニック & WSHスクリプト 100選 Windowsサーバー Hacks ―管理者必携のテクニック & WSHスクリプト 100選
Mitch Tulloch 高橋 基信

オライリージャパン 2005-05-26
売り上げランキング : 254781

Amazonで詳しく見る by G-Tools

信長は俺の嫁。 オンラインゲーム

コメントを残す

メールアドレスが公開されることはありません。