Windowsでコマンドプロンプトを使うときに、管理者権限が必要なときがありますよね。
Linuxでは「sudo」というコマンドで、実行するコマンドを管理者権限で実行できます。
しかしWindowsにはありません。
それを実現するバッチファイルを作ってくれた記事がありました。
しかしバッチファイルにこの管理者権限での実行を組み込むことができませんでした。
今回は、作成したバッチファイルをこの「sudo」を使って、管理者権限で実行する方法です!
sudoするバッチ
このQiita記事のものを使っています。
この内容で「sudo.bat」を作って、「C:\windows\system32\」に配置する。
パスが通っているところならOKな気もします。
powershell.exe Start-Process "%1" -Verb runas
引用: Windowsでsudoしたい
バッチの中でsudoを呼ぶ
権限の必要なバッチファイルを作ったとします。
コレを
- コマンドプロンプトを起動
- sudoでバッチを叩く
ということをせずに、ダブルクリックやEnterだけで一撃起動させたいとします。
- 実行用のバッチを作成する
- 起動用のバッチを作成する(sudoで実行させる)
- 実行したいときは「起動用バッチ」を叩く
とすればOK!
呼び出したいバッチを作る
呼び出したいバッチを
.\exec\show.bat
というふうに作るとします。
テスト用のバッチの中身はこんな感じ。
echo バッチが実行されたよ! pause
表示して、キー押下待機。
起動用バッチの作り方
起動用に作成「run.bat」を作り、先程の「show.bat」を呼び出します。ます。
echo .\exec\show.bat | sudo
ファイルの構成はこんな状態。
.\run.bat
.\exec\show.bat
試す
起動用である「run.bat」を叩きます。
UAEをOFFしていなければ、「管理者実行していい?」的なポップアップが出るので「はい」を押しましょう。
run.batを実行した画面では
>echo .\exec\show.bat | sudo >powershell.exe Start-Process "" -Verb runas コマンド パイプライン位置 1 のコマンドレット Start-Process 次のパラメーターに値を指定してください: FilePath: .\exec\show.bat
のように表示されます。
(コマンドプロンプトから実行しない場合は、一瞬で消えるのでほぼ見えないです)
そして、別のコマンドプロンプトが立ち上がり
>echo バッチが実行されたよ! バッチが実行されたよ! >pause 続行するには何かキーを押してください . . .
と表示されます。
ちゃんとバッチが実行されていますね!
あとがき
このバッチ作ってくれた方のおかげで、コマンド実行時の管理者実行が捗りますね!
そして
コマンドや設定値が長くてバッチにしたけど、管理者権限の関係でバッチ化できない!
というのも、コレで解決ですね!