「runas」コマンドで他のユーザー権限でプログラムを実行する【Windows 10/11】Tech TIPS

Windows OSの「別のユーザーとして実行」機能を利用すると、サインインし直すことなく、別のユーザー(資格情報)でプログラムを実行できる。コマンドラインで実現するなら「runas」という標準のコマンドが利用できる。ただし、管理者権限(特権)での実行には注意が必要だ。

» 2022年07月20日 05時00分 公開

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Tech TIPS」のインデックス

連載目次

Windows OSのrunasコマンドで他のユーザー権限でプログラムを実行

対象:Windows 10/Windows 11


 普段サインインしているユーザーアカウントとは異なる、別のユーザーの設定情報を知りたい、あるいは設定を変更したい、ということはないだろうか?

 もちろん、そのユーザーアカウントでサインインし直せば簡単に実現できることだ。しかし、サインインにはそれなりの時間がかかるし、別のユーザーの環境だと不慣れで作業しにくく、効率が悪くなりがちだ。

 そこで活用したいのが、Windows OS標準装備の「別のユーザーとして実行」という機能だ。これだとサインインしているユーザーを変えることなく、別のユーザーの権限で指定のプログラムを起動できるので、サインインし直すより速やかに情報取得や設定変更などの作業がこなせる。

 本Tech TIPSでは、「runas」というコマンドを利用して、別のユーザー資格情報によるプログラム実行をコマンドラインで実現する方法と注意点を説明する。

 この機能をGUIで実現する方法については、古い記事ではあるが、Tech TIPS「一時的にほかのユーザー権限でプログラムを実行する方法(ショートカット・メニューを利用する方法)」「一時的にほかのユーザー権限でプログラムを実行する方法(ショートカットのプロパティを利用する方法)」が参考になるだろう。

runasコマンドの基本的な使い方

 runasコマンドの基本的な実行方法は以下の通りだ。

runas /user:<ユーザー名> <コマンド>



 <ユーザー名>には、Windows OSで一般的に使われるユーザーアカウントの表現方法を以下のように指定する(詳しくはTech TIPS「Windowsネットワークにおけるユーザー名とドメイン名の指定方法」参照)。

  • ローカルユーザーアカウント: <ユーザー名>
  • Microsoftアカウント: <Microsoftアカウントのメールアドレス>
  • リモートPCのユーザーアカウント: <NetBIOSコンピュータ名>\<ユーザー名>
  • Active Directoryドメインユーザー: <NetBIOSドメイン名>\<ユーザー名><ユーザー名>@<ドメインのFQDN>

 また、実行したいコマンドにオプション(引数)が必要なため、コマンドラインにスペースが含まれる場合は、以下のようにダブルクオートでくくって指定する。

runasコマンドの基本的な実行方法 runasコマンドの基本的な実行方法

バッチファイルなどでrunasを自動実行するには?

 runasを実行すると、デフォルトでは、指定したユーザーアカウントに対するパスワードの入力が求められる。そのため、バッチファイルなどで自動実行をしようとしても、runasが実行された直後のパスワード入力のところで一時停止してしまう。

 これを防ぐには、「/savecred」というオプションを用いればよい。まずはrunasのコマンドラインに/savecredオプションを加えつつ、手動で実行する。

runas /savecred /user:<ユーザー名> <コマンド>



パスワードが求められるので、入力して実行を完了させる。これにより、対象のアカウントとパスワードのセット(資格情報)がシステムに保存される。

 以後は、(/savecredを含む)同じコマンドラインを実行しても、パスワード入力なしで即座に実行されるはずだ。

runasの「/savecred」オプションで実行時のパスワード入力を省く runasの「/savecred」オプションで実行時のパスワード入力を省く

 ただ、この設定をしたPCを操作できる人なら誰でも、保存された資格情報でプログラムを起動できてしまう。当たり前のことだが、コンソールあるいはリモートから第三者にPCを操作されないように一層注意を払った方がよい。

 保存された資格情報は、コントロールパネルの[ユーザーアカウント]−[資格情報マネージャー]−[Windows資格情報]で確認や編集、削除が可能だ。

runas /savecredで保存されたアカウントとパスワード(資格情報) runas /savecredで保存されたアカウントとパスワード(資格情報)

 コントロールパネルの開き方は、以下のTech TIPSを参照していただきたい。

runasでは管理者特権でのプログラム起動ができない!?

 レジストリエディター(regedit.exe)やコンピュータ証明書の管理ツール(mmc certlm.msc)のように、管理者権限(特権)が必須のプログラムをrunasで実行しても、「740: 要求された操作には管理者特権が必要です。」というエラーで失敗することがよくある。/userオプションに管理者アカウントを指定していても、同じエラーが生じる。

runasで管理者特権が必要なプログラムを起動しようとしてエラーになった例 runasで管理者特権が必要なプログラムを起動しようとしてエラーになった例

 通常、こうしたプログラムをコマンドプロンプトで直接実行すると、直後にユーザーアカウント制御(UAC)のダイアログが表示され、[はい]ボタンを押して承認することで正常に起動できる。しかしrunasだと、このUACのダイアログが表示されず、エラーで終了してしまう。

runasとビルトインAdministratorで管理者特権の必要なプログラムを実行する

 上述のエラーを回避する方法の1つとしては、Windows OSに最初から組み込まれている「Administrator」アカウント(「ビルトインAdministratorアカウント」などと呼ばれる)の利用が挙げられる。後から作成した管理者アカウントと違い、ビルトインAdministratorではUACのダイアログによる承認がデフォルトで無効化されているため、runasでもエラーなしに管理者権限の必要なプログラムを起動できるのだ。

 ただし、Windows 10/11ではデフォルトでビルトインAdministratorが無効化されているため、そのままでは利用できない。これは「Administrator」という既知のアカウント名を狙ったサイバー攻撃を防止するといった意味がある。

 そのため、定常的にビルトインAdministratorを有効にしておくのは好ましくない。runasで実行する際など一時的に有効にして、不要になったら無効化する、といった運用が望ましい。

 ビルトインAdministratorを有効化するには、管理者特権で開いたコマンドプロンプトなどで以下のコマンドラインを実行する。

net user administrator /active:yes



 初めて有効化した場合は、以下のようにパスワードも設定する必要がある。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。