【Bat】バッチが管理者権限で実行されていない場合、自動で管理者権限に昇格する方法

Bat

今回は前回までのまとめとして、管理者権限で実行されていない場合に自分自身を管理者実行するバッチを作成してみます。

管理者権限であることを確認する

まずは管理者権限かどうかを確認する部分のおさらいです。
以前に書いた記事にもうちょっと詳しく解説してあります。

今回はWhoamiを使った形で確認してみます。

whoami /priv | find "SeDebugPrivilege" > nul if %errorlevel% neq 0 (
 echo 管理者権限ではありません
)

echo 管理者権限です
pause
exit

管理者権限で実行する

こちらも以前の記事から引用します。

今回はPowerShellを使った方法で管理者権限で実行します。

powershell start-process cmd -verb runas

管理者権限でなければ管理者実行する

上記2つの機能を使って、1つにまとめると1ダブルクリックで開いた際などで、意図せず一般権限で実行してしまっても管理者権限に自動で昇格します。

whoami /priv | find "SeDebugPrivilege" > nul
if %errorlevel% neq 0 (

 @powershell start-process %~0 -verb runas
 echo 管理者権限がありません。管理者権限で実行します
 exit
)
echo 管理者権限に自動で昇格できました。
pause
exit

%~0は自分自身のファイルパスを返す変数です

このような形で自動で管理者権限に昇格するバッチができました。
ダブルクリックで開くと自動で開きなおし、管理者権限で実行できているのが分かると思います。
何かのお役に立てれば幸いです。

コメント

Translate »
タイトルとURLをコピーしました