見出し画像

Windowsのバッチを、必ず管理者権限で実行させる方法

2020年にWindowsのバッチファイルを編集しているとは思いませんでした。

ユーザーにバッチファイルを管理者権限で実行してもらわないとならないのですが、右クリックから管理者権限で実行してくださいといったところで、全員がちゃんとやってくれるとは限らないし、ショートカットから管理者権限で実行させるってのもできなくはないけど、なんでファイルが2個あるんですか?どっちをクリックしたらいいんですか?などと無辜のユーザーを混乱させたくはない訳です。

そこで、調べてみたところ、コマンドプロンプトを管理者権限で実行するコマンド(*)があるのがわかったので、それを組み込んで作成したのが以下のバッチ。

利用する際は「:<ここから>管理者権限で実行させたい処理を記述」から「:管理者権限で実行させたい処理を記述<ここまで>」の間に管理者権限で実行させたいコマンドを記述し、「:<ここから>ユーザー権限で実行させたい処理を記述」から「:ユーザー権限で実行させたい処理を記述<ここまで>」の間にユーザー権限で実行させたいコマンドを記載すると良い。

@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)ってのがありますよ。
コミュニティでは情シスが悩む色々な事柄について日々活発な情報交換が行われています。気になった方は、発起人の横山さんの以下の投稿をご覧になってみてください。


この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
ありがとうございます、いいねを励みに投稿を続けます
3
30代のリーマン。 情シス的なことをして糊口を凌いでいます。

こちらでもピックアップされています

デジタル的な何かしら
デジタル的な何かしら
  • 90本

ガジェットとかパソコンとか、デジタルサービスとかそう言ったものについて

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。