ども、k69 です。
一発でPCの開発環境構築をするためにバッチ(.bat)を作っていると
1. コマンドプロンプトを「管理者として実行」(起動)しないとできないことがある ★ 今回はこれ
2. ”ユーザ名”などの利用者毎にことなる情報は設定ファイル(ini)にしたい
3. コマンドプロンプトを再起動しないと設定が反映されないことがある
など、ちょいちょい課題が出てきました。
じゃ、「今回はバッチファイル(.bat)をダブルクリックしたときに「管理者として実行」(起動)できないかやってみよう!」と
ウニウニしたのがこの記事です。
対象読者
- バッチファイル(.bat)でみんなにラクさせたい人(ラクしたい人)
- バッチファイル(.bat)をダブルクリックしたとき「管理者として実行」させたい人
前提条件
- WindowsPCの人
手順
1. はじめに
今回はセットアップ用のバッチファイル(setup.bat)から別のバッチファイル(01_install.batと02_config.bat)を処理した順番で呼び出すことを想定しています。
1. セットアップ用のバッチファイル(setup.bat)を作成します
PowerShellを使って、setup.batファイルから他のバッチファイル(.bat)を呼び出します。-Waitを付けることで、01_install.batが完了してから02_config.batを実行します。
title setup
cd /d %~dp0
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process 01_install.bat -Verb runas" -Wait
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process 02_config.bat -Verb runas" -Wait
※ 01_install.batと02_config.batは、なんでも(exeでも)OKです。
実行してみると、ダイアログがでるので”はい”を選択すれば「管理者として実行」で指定したバッチファイルが実行されます。
まとめ
今回のやり方を使えば、『バッチファイル(setup.bat)を動かすときに右クリックで「管理者として実行」を選択する』ことを利用者に意識させなくてよくなりそうです。
ただし、一発でPCの開発環境を作るためには『ダイアログで”はい”を選択する』手間もなくしたいところですが、セキュリティの観点からここを省略することは厳しいとも思いました。
セキュリティレベルを落とすことなく、もっといいやり方を知っている人がいれば、コメントよろしくですw
参考URL
- WindowsのPowerShellを管理者権限で起動する方法
https://qiita.com/syui/items/7d42d7e691010ee212fb