runasコマンドで昇格済み管理者権限で起動できないのはUAC有効の影響?

Windows7の運用をしていたころ、runasコマンドはよく利用していて便利だったのですが、runasコマンドでuser:Administratorとしても管理者権限で動かせないという情報があり、Windows10などでも参考になりそうだったので、情報をシェアします。

 

情報元はいつものフォーラムです。

runasコマンドでuser:Administratorとしても管理者権限で動かせない 

 

以下は質問内容の一部抜粋です。

 

1)動作に管理者権限が必要なアプリケーション(IPアドレスの変更操作ができるフリーソフト)を一般権限のユーザーで動かしたい。
2)下記のコマンドを使い、バッチファイル経由で上記アプリケーションを起動する
 runas /savecred /user:administrator <アプリケーションの実行ファイル>
3)アプリケーションが起動してきてから操作をしても正常に動作しない
 →ログを見ると、管理者特権がないので動作できない旨の内容が記載されている
このようにrunasでAdministratorとして動かしても、ユーザー:Administratorとして動いていないように見られる状態です。
発生する状況もまちまちで、同イメージからクローニング展開した端末同士でも現象が発生する端末としない端末があり、ある時突然現象が発生する端末があるなど、現象が発生する端末の共通点が全くないような状況です。
またこの現象が発生するとアプリケーションインストール時など管理者特権が必要な場合に、明示的に「右クリック→管理者として実行」を選択しない限りUACのウインドウも表示されなくなってしまいます。

 

 

分かりやすい回答はこちら。runasコマンドはUACを含まない管理者スイッチを想定しているとありますので、最近のOSだと書かれているような動作になるのでしょう。

 

この件ですが、端的にいうと「runas」コマンドで「昇格済み管理者権限」で起動させることはできません。runasはWindows Server 2003レベルの「UACを含まない管理者スイッチ」を想定しているため、UAC昇格とは連携していません。わからなければ、実行した状態で「whoami /priv」を実行すると、特権名が少ないのでわかります。

結論としてコマンドで実行するには、以下のように「コマンドプロンプトでStart-Processを-verb Ruasで実行する」必要があります。この場合、UAC昇格のダイアログは必ず表示されます。

powershell -command start-process cmd -verb runas

 

runasコマンドは最近はサーバ側で使用することがあるので、その際にUACは無効にしていて気づきませんでした。

 

Runas /savecred /user:Administrator "powershell start-process <プログラム> -verb runas"

「Start-Processを-verb Ruasで実行する」だけだと標準ユーザー環境ではUAC昇格のダイアログで管理者ユーザー名とパスワードの入力を求められたので、先に「Runas /user:Administrator」でAdministratorのユーザー名パスワードを渡しておいたら入力なしでそのままプログラムを実行できました。
今までと同じように初回はパスワードの入力が必要でしたが、とりあえず目的の動作は達成できました。

 

UACは環境によって有効、無効があるかもしれませんがこの情報は役立ちそうですね。今後、同様の事象が発生した場合は参考にしてみます。UACを無効で運用している場合や、そもそもこのコマンドを使用していない場合は、気にする必要がない内容です。