ユーザーアカウント制御のダイアログ無しに、管理者権限でプログラムを実行する方法です。
事前にタスクスケジューラで、管理者権限でプログラムを実行するタスクを登録しておきます。そのタスクを実行することで、ユーザーアカウント制御のダイアログ無しに実行できます。
ここでは、管理者権限で実行したいプログラムをバッチファイル exec.bat とします。
次の内容で作成しておいてください。
このバッチファイルは、通常の実行では「管理者権限ではありません」と表示し、管理者権限で実行された場合は「管理者権限です」と表示します。
@echo off
cd /d %~dp0
for /f "tokens=3 delims=\ " %%i in ('whoami /groups^|find "Mandatory"') do set LEVEL=%%i
if NOT "%LEVEL%"=="High" (
echo 管理者権限ではありません
pause
exit
)
echo 管理者権限です
pause
次にタスクスケジューラで、exec.bat を管理者権限で実行するタスクを登録します。
ここでは、タスク名「テスト」とします。次のようにしてタスクを作成してください。
スタートメニュー から Windows管理ツール より タスクスケジューラ を起動します。タスクスケジューラの画面左のツリーの [タスクスケジューラ ライブラリ] の上で右クリックし、[タスクの作成] を選択します。
現れた画面で、次の設定を行います。
全般タブで、「名前」を「テスト」にします。また「最上位の特権で実行する」にチェックします。

[操作]タブで、[新規]ボタンを押します。
現れた画面で、次の設定を行います。
“操作” で “プログラムの開始” を選択します。“プログラム/スクリプト” に、先の手順で作成した exec.bat を指定し、[OK]ボタンを押します。

条件タブで、「コンビューターをAC竜源で使用している場合のみタスクを問始する」のチェックを外し、[OK]ボタンを押します。

これで、タスク「テスト」を登録しました。
コマンドプロンプト/PowerShellから、次のようにして、タスク「テスト」を実行してください。
exec.bat が管理者権限で実行され、あらわれたコマンドプロンプト画面で「管理者権限です」と表示されます。
schtasks /run /tn テスト
タスクから実行したプログラムの完了を待つ場合は、次のようなバッチファイルでタスクを実行してください。
@echo off
set TASK_NAME="テスト"
schtasks /run /tn %TASK_NAME%>nul
:LOOP
timeout /t 1 >nul
schtasks /query /tn %TASK_NAME% /fo LIST | findstr /i "状態" | findstr /i "実行中" >nul
if %errorlevel%==0 (
goto LOOP
)
echo タスク完了
pause
以上の内容で、ユーザーアカウント制御のダイアログ無しに管理者権限でプログラムを実行できます。
コメント