きり丸の技術日記

技術検証したり、資格等をここに残していきます。

「ファイル名を指定して実行」「エクスプローラ」からcmdを管理者権限で実行する

小ネタ。

今まで、コマンドプロンプトの管理者権限の起動を右クリックから行っていたので、もうちょっと簡単にできないか探った記事です。

環境

  • Windows 10

ファイル名を指定して実行から管理者権限の起動

WindowsにてWin + Rキーを入力すると「ファイル名を指定して実行」の画面が出力されます。そこからcmdを入力してEnterキーで起動することが多いのですが、管理者権限として起動したいことがあります。

ここでShift + Ctrl + Enterキーを入力することで、管理者権限でアプリケーションを起動できます。

エクスプローラのアドレスバーからの管理者権限の起動

別の起動方法で、コマンドを管理者権限で起動する方法を紹介します。

上に書いた「ファイル名を指定して実行」画面からcmdを起動すると、%USERPROFILE%のパスで起動します。私の場合は、C:\Users\nainaで起動します。

Windowsでは、エクスプローラのアドレスバーにコマンドを入力して、コマンドを実行することもできます。アドレスバーでcmdと入力した場合は、起動時のパスをエクスプローラのパスにできます。

次の画像は、C:\Users\naina\products\cucumber-sampleのエクスプローラからcmdを起動した結果のコマンドプロンプトの画像です。

アドレスバーで起動するパターンでは、管理者権限で起動するには一工夫が必要です。次の処理を行う必要があります。

  1. バッチファイルを用意する
  2. バッチファイルにパスを通す

バッチファイルを用意する

powershellを経由して、コマンドプロンプトを管理者権限で起動させるバッチを記載します。

バッチ名がコマンド名になります。自分が使用したいコマンド名のバッチファイルを作りましょう。今回の記事ではcmda.batという名前のバッチ名(コマンド名)にします。

powershell start-process cmd -ArgumentList '/k ""cd /d %CD%""' -verb runas

バッチファイルにパスを通す

環境変数のPATHが設定されているディレクトリのどこかに配備してください。特にこだわりがなければ、C:\Windows\system32へパスは通っているはずですので、こちらに配備してください。

# 配備対象のパス
echo %PATH%

ここまで対応してアドレスバーにてバッチ名(コマンド名)を入力すると、エクスプローラで起動しているパスを元に、管理者権限でコマンドプロンプトが起動します。今回の記事ではバッチ名(コマンド名)はcmdaです。

正確に挙動を表現すると、.batに対してコマンドプロンプトが関連付けされているので、今回作成したバッチのcmda.batがコマンドプロンプトで起動します。その後、バッチファイルが実行され、管理者権限で起動する旨のモーダルウィンドウが表示されるため、はいをクリックします。はいをクリックすると、管理者権限でコマンドプロンプトが起動します。

終わりに

そこまで管理者権限で起動したいタイミングはないので、ユースケース自体は少ないです。あと、そもそもこの内容はどうやったら検索されるんでしょうか…。私は知る機会がなかったです。

参考情報