別ユーザーの権限でプログラムを実行する

ユーザーサポートの作業などで、管理者権限でプログラムの実行が必要になることがあるかと思います。
管理者アカウントでいちいちログインし直すのも面倒…という時は、他ユーザーの権限でプログラム実行が可能になる、runas コマンドが便利です。

runasコマンドの使い方

まずコマンドプロンプトを立ち上げます。
環境に合わせ、以下の形式でコマンドを入力&実行。

ローカルアカウントを利用する場合

runas /user:ローカルユーザー名 “プログラムパス/プログラム名”

例: runas /user:administrator cmd

ドメインアカウントを利用する場合

runas /user:ドメイン¥ユーザー名 “プログラムパス/プログラム名”

または

runas /user:ユーザー名@ドメイン “プログラムパス/プログラム名”

例: runas /user:wkhack\admnistrator “C:\Program Files\testProgram\xyz.exe”

■ Microsoftアカウントを利用する場合

runas /user:Microsoftアカウントのメールアドレス ”プログラムパス/プログラム名”

例: runas /user:administrator@wkhack.co.jp cmd

もしユーザー名にスペースが含まれる場合は、以下のようにユーザーオプションもダブルクォーテーションで括ります。

例:runas /user:”tmp admin@wkhack.co.jp” cmd

またrunas実行時は、当然ですが↓のように指定したユーザーのパスワード入力が求められます。

runasコマンド利用時の注意点

ちなみにrunasでは、UAC制御で管理者昇格が必要なプログラムを実行することができません。
(ビルトインのadministratorアカウント除く)

UAC制御で昇格が必要なプログラムとは、実行時に以下のようなダイアログが表示されるものです。
(例えばregeditなど)

その場合、一度runasで管理者権限のコマンドプロンプトを立ち上げ、そのコマンドプロンプト内でUAC昇格が必要なプログラムを実行することで、regeditなども管理者権限で起動することができます。

  1. runas user:/”管理者権限ユーザー” cmd で管理者権限のコマンドプロンプト起動
  2. 立ち上がったコマンドプロンプト内でregedit などUACコマンドを実行

UAC昇格が必要なコマンド以外にも、複数プログラムを実行する時など、一度runasで管理者権限のコマンドプロンプトを立ち上げることで認証の手間が省けます。

※ /savecredオプションで資格情報を記憶させる方法もありますが、セキュリティ的に資格情報を残したままにするのは微妙かつ作業終了時に消し忘れても嫌なので、あまりお勧めしません。

runasコマンドその他のオプション

/noprofileユーザープロファイルを読み込ませたくない場合に指定します。
プログラムをより早く読み込めますが、一部のプログラムが動作しない可能性あり。
/profileユーザープロファイルを読み込む場合に指定します。既定の設定です。
/envコマンドが実行されている権限の環境ではなく、現在のユーザーの環境を使用する場合に指定します。
/netonly指定された資格情報をリモートアクセスのみで利用する場合に指定します。
※別ドメインのユーザーで実行する場合など。DB操作などに利用できます。
/savecredユーザーが以前に保存した資格情報を利用します。
このオプションを指定することで、初回のみパスワードを聞かれ、2回目以降はパスワードなしで実行可能になります。
/smartcard資格情報がスマートカードから提供される場合に指定します。
/showtrustlevels /trustlevelオプションで利用可能なレベルを表示します。
/trustlevelユーザーの実行権限を指定します。
※管理者ユーザーが一般ユーザー権限で実行したい場合などに利用。
タイトルとURLをコピーしました