![見出し画像](https://assets.st-note.com/production/uploads/images/18085438/rectangle_large_type_2_b49c29fc38313c73e599cf6ac8c8dc00.jpeg?width=1200)
Windowsのバッチを、必ず管理者権限で実行させる方法
2020年にWindowsのバッチファイルを編集しているとは思いませんでした。
ユーザーにバッチファイルを管理者権限で実行してもらいたいのですが、右クリックから管理者権限で実行してくださいといったところで、ちゃんとやってくれるとは限らないし、ショートカットから管理者権限で実行させるのは、ファイルが複数になるのでやはり、必ず管理者権限で実行させられるとは限りません。
そこで、調べてみたところ、コマンドプロンプトを管理者権限で実行するコマンド(*)があるのがわかったので、それを組み込んで以下のバッチを作成しました。
利用する際は「:<ここから>管理者権限で実行させたい処理を記述」から「:管理者権限で実行させたい処理を記述<ここまで>」の間に管理者権限で実行させたいコマンドを記述すると良いです。
もし、管理者権限で実行する前にユーザー権限で実行させたいコマンドがある場合は、同様に「:<ここから>ユーザー権限で実行させたい処理を記述」から「:ユーザー権限で実行させたい処理を記述<ここまで>」の間に記述すると良いです。
@echo off
cd /d %~dp0
:<ここから>実行権限と引数で分岐
:管理者特権で実行しないとエラーになる処理
openfiles > NUL 2>&1
:上記処理がエラー(ユーザー権限)であれば一般権限で実行する処理に移動
if NOT %ERRORLEVEL% EQU 0 goto promotion
:実行権限と引数で分岐<ここまで>
:<ここから>管理者権限で実行させたい処理を記述
echo 管理者権限です。
pause
:管理者権限で実行させたい処理を記述<ここまで>
:↓の記述で管理者権限のときに一般権限の処理を実行しないようにしています①
goto end
:promotion
:<ここから>ユーザー権限で実行させたい処理を記述
echo ユーザー権限です。
:ユーザー権限で実行させたい処理を記述<ここまで>
:管理者権限で自分自身を実行(昇格処理)
powershell start-process %~nx0 -verb runas
:↓の記述で管理者権限のときに一般権限の処理を実行しないようにしています②
:end
* 参考記事:コマンドプロンプトから管理者権限のコマンドプロンプトに切り替える
宣伝
このマニアックな投稿をご覧のあなたは、もしかしたら情シス(コーポレートエンジニア)だったりしませんか?情シスが集うコミュニティ(corp-engr.slack.com)ってのがありますよ。
コミュニティでは情シスが悩む色々な事柄について日々活発な情報交換が行われています。気になった方は、発起人の横山さんの以下の投稿をご覧になってみてください。