[ホーム] - [Windows Server 2016 FAQ 一覧] - [runas の使い方基本、パスワード入力や画面を閉じない方法やエラーへの対処]



作成日:2021/09/12
更新日:2021/09/13
対象:Windows Server 2016

runas の使い方基本、パスワード入力や画面を閉じない方法やエラーへの対処




【目次】


runas の使い方


このページではruas コマンドの使い方やエラーへの対処に関して説明します。
runas は他のユーザへ一時的に切り替えてコマンドを打つ機能です。Unix系の sudo に似た機能です。
例えば一般ユーザでログインしている状態で管理者権限のコマンドを実行したいとします。その場合にこの runas コマンドを利用して管理者ユーザとしてコマンドを実行することが可能です。一般ユーザでは通常時から administrator グループのユーザで作業を実行すると思いますが、企業などのエンタープライズユーズでは通常は一般ユーザでログインし必要時に管理者にスイッチすると思います。これは操作ミスでシステムにダメージを与えるのを防止するためです。Windowsでももし一般ユーザでログインしadministrator権限でコマンドを実行したい場合はこのrunas を使用してください。

注意点ですが、この runasで切り替わるのはあくまでも他のユーザです。Windowsの"管理者として実行"とはまた別なので注意してください。とても紛らわしいです。
参考:"管理者として実行"とadministrator権限の違い

runas 基本形


基本形は /user:administrator でユーザ名を指定して実行します。ドメインアカウントの場合は"ドメイン\ユーザー"で指定します。別ウィンドウが開いて実行されます。


C:\>runas /user:administrator "Dism /Online /Cleanup-Image /ScanHealth"
administrator のパスワードを入力してください:
Dism /Online /Cleanup-Image /ScanHealth をユーザー "TESTDOMAIN\administrator" として開始しています...



参考まで、administratorsグループではなくuserグループ権限で実行すると次のエラーとなります。

C:\>Dism /Online /Cleanup-Image /ScanHealth

エラー: 740

DISM を実行するには、管理者特権のアクセス許可が必要です。
これらのタスクを完了するには、管理者特権でコマンド プロンプトを使用してください。



パスワードを記憶する


上記の場合はパスワードを毎回入力する必要があります。一般的なメンテナンス操作はこの方法で問題ないのですが、バッチシステムやシェルとして使う場合は自動で入力する必要があります。例えば毎日の夜間バッチでバックアップする場合など、毎晩ユーザが入力する訳にはいきません。そんな場合は「/savecred 」を利用してパスワードを保存することで実現することが可能です。


/savecred ユーザーが以前に保存した資格情報を使います。



例:

C:\>runas /user:administrator /savecred "Dism /Online /Cleanup-Image /ScanHealth"



これで初回のパスワードに関しては入力する必要がありますが、2回目以後は自動で入力されます。保存された資格情報を使用するには、毎回/savecredオプションを付加する必要があります。
コントロールパネルの資格情報を確認してください。次のとおりパスワード(というか認証情報)が保存されていることが分かります。

資格情報マネージャに保存されたパスワード



セキュリティの面で十分に注意して運用してください。不要になったら削除する必要があります。

ビルトイン administrator とUAC


もし実行するプログラムが管理者昇格が必要な場合(例えば レジストリエディタ)、runas は実行することができません。(2021年現在)
ただ指定したユーザがビルドインadministratorなら昇格は不要なのでUACは表示されません。ビルとイン管理者ではなく別途作成した管理者の場合はUAC昇格が必要ですが昇格画面が表示されないためエラーとなってしまいます。

runas で管理コマンドを実行した場合、次のエラーで失敗する場合があります。admin2はビルドインではなく別途作成したadministratorアカウントとします。


C:\>runas /user:admin2 regedit
admin2 のパスワードを入力してください:
regedit をユーザー "TESTDOMAIN\admin2" として開始しています...
RUNAS エラー: 実行できません - regedit
740: 要求された操作には管理者特権が必要です。



この"740: 要求された操作には管理者特権が必要です"の原因はregeditが管理者昇格が必要なコマンドであるからです。

runas 単体ではUAC昇格画面を表示する方法は私には見つかりませんでした。トリッキーですが、以下のようにpowershellを経由すればUAC昇格画面を表示させることができました。


powershell -command start-process cmd -verb runas



runas でウィンドウを閉じない


runas を実行して気が付くと思いますが、指定したコマンドの実行が完了すると画面が消えてしまいます。よって出力した内容やエラーとなった場合のエラーメッセージを確認することができません。そんな場合には実行する処理をバッチファイルにして、最後にpause で処理を止めるとよいでしょう。

c:\temp\test.bat

Dism
pause



これで以下のようにコマンドを実行します。test.batにパラメータを与える場合はダブルクォートでくくります。

runas /user:administrator c:\temp\test.bat



以上でdism の後 pause で画面出力を目視で確認することが可能です。

パラメータを指定する


runas ではパラメータを与えることが可能です。以下の2点に注意してください。
(1)コマンド全体をダブルクォートでくくる。
(2)パスはフルパスで指定する。

以下の例では c:\test.bat というファイルに TestString というパラメータを与えています。


runas /user:administrator "c:\temp\test.bat TestString"



test.batは以下のように設定しています。これでパラメータが正しく渡されていることの確認が可能です。

echo %1
pause



1326: ユーザー名またはパスワードが正しくありません


ユーザ名あるいはパスワードに誤りがある場合次のようなエラーが発生します。

RUNAS エラー: 実行できません - (コマンド名)
1326: ユーザー名またはパスワードが正しくありません。



よくある間違いがユーザがドメインアカウントかローカルアカウントか取り違えている場合です。指定したユーザがドメインのアカウントなのかそのローカルのアカウントなのかを確認し、それに合致した形式で指定してください。ドメインの場合は"ドメイン\ユーザー"で指定します。ローカルの場合は"ユーザ名"で指定します。

1385: ログオン失敗: 要求された種類のログオンは、このコンピューターではユーザーに許可されていません


runasを実行すると次のエラーがで失敗することがあります。


RUNAS エラー: 実行できません - (コマンド名)
1385: ログオン失敗: 要求された種類のログオンは、このコンピューターではユーザーに許可されていません。


これはrunasしようとしたユーザが"ローカルログオンを許可されていない"ことが主な原因です。
グループポリシーを確認しユーザがその権限を保有していることを確認してください。

ローカルログオンを許可する



1327: アカウントの制限により、このユーザーはサインインできません。


runasを実行した場合、次のエラーで失敗する場合があります。


RUNAS エラー: 実行できません - (プログラム名)
1327: アカウントの制限により、このユーザーはサインインできません。空のパスワードが許可されていない、サインイン時間が制限されている、またはポリシーによる制限が適用されたなどの理由が考えられます。



これはrunasしたユーザに問題があります。アカウントがロックされていないか、guestアカウントではないか、サインイン時間が制限されていないかなどを確認してください。


runas のヘルプ


最後に runas の基本形のヘルプに関して掲載します。実行する場合に参考にしてください。


RUNAS 使用法:

RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ]
/user:<ユーザー名> プログラム

RUNAS [ [/noprofile | /profile] [/env] [/savecred] ]
/smartcard [/user:<ユーザー名>] プログラム

RUNAS /trustlevel:<信頼レベル> プログラム

/noprofile ユーザーのプロファイルを読み込まないように指定します。
この結果、アプリケーションをより速く読み込むことができま
すが、一部のアプリケーションが正しく動作しない可能性があ
ります。
/profile ユーザーのプロファイルを読み込むように指定します。
これは既定値です。
/env ユーザーの環境ではなく、現在の環境を使用する場合に使います
/netonly 指定された資格情報をリモート アクセスのみで使用する場合に
使います。
/savecred ユーザーが以前に保存した資格情報を使います。
/smartcard 資格情報がスマート カードから提供される場合に使います。

/user <ユーザー名> の形式は、"ユーザー@ドメイン" または
"ドメイン\ユーザー" です
/showtrustlevels /trustlevel に対して引数として使用できるレベルを表示し
ます。
/trustlevel <レベル> は /showtrustlevels に列挙されているレベルの
いずれかです。
プログラム 実行可能なコマンドラインです。下の例を参照してください。

例:
> runas /noprofile /user:mymachine\administrator cmd
> runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"
> runas /env /user:user@domain.microsoft.com "notepad \"my file.txt\""

注意: 要求されたときのみ、ユーザーのパスワードを入力してください。
注意: /profile は /netonly と互換性がありません。
注意: /savecred は /smartcard と互換性がありません。







(ご注意) 本サイト内の内容を使用して発生したいかなる時間的損害、金銭的損害あるいはいかなる損害に対して、いかなる人物も一切の責任を負いません。あくまでも個人の判断で使用してください。 本ページは独自に調査をしたアンオフィシャル(非公式)な内容です。内容に誤りがある可能性や仕様変更により内容が不正確になる可能性があります。 本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。)


Copyright(c) TOOLJP.COM 1999-2022

[Windows Server 2016 FAQ 一覧に戻る]