lisz-works

プログラミングと興味を貴方に

Windowsでsudoをバッチに組み込む

【スポンサーリンク】

ソースコード

Windowsでコマンドプロンプトを使うときに、管理者権限が必要なときがありますよね。

Linuxでは「sudo」というコマンドで、実行するコマンドを管理者権限で実行できます。

しかしWindowsにはありません。

それを実現するバッチファイルを作ってくれた記事がありました。

しかしバッチファイルにこの管理者権限での実行を組み込むことができませんでした。

今回は、作成したバッチファイルをこの「sudo」を使って、管理者権限で実行する方法です!

sudoするバッチ

このQiita記事のものを使っています。

qiita.com

この内容で「sudo.bat」を作って、「C:\windows\system32\」に配置する。
パスが通っているところならOKな気もします。

powershell.exe Start-Process "%1" -Verb runas 

引用: Windowsでsudoしたい

バッチの中でsudoを呼ぶ

権限の必要なバッチファイルを作ったとします。

コレを

  1. コマンドプロンプトを起動
  2. sudoでバッチを叩く

ということをせずに、ダブルクリックやEnterだけで一撃起動させたいとします。

  1. 実行用のバッチを作成する
  2. 起動用のバッチを作成する(sudoで実行させる)
  3. 実行したいときは「起動用バッチ」を叩く

とすれば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
続行するには何かキーを押してください . . .

と表示されます。

ちゃんとバッチが実行されていますね!

あとがき

このバッチ作ってくれた方のおかげで、コマンド実行時の管理者実行が捗りますね!

そして

コマンドや設定値が長くてバッチにしたけど、管理者権限の関係でバッチ化できない!

というのも、コレで解決ですね!

qiita.com