Vista以降のOSでユーザを切替えかつ管理者モードでアプリを実行する

Technical

XPでは、通常のユーザからも、ローカルPCの管理者権限を持つアカウントにRunasで切替えてインストーラーなどを実行できました。

・・・が、UACが有効なVista以降だとビルドインAdministratorならいざ知らず、
通常の管理者アカウントでは管理者権限に昇格を行わないと
単純実行では、ユーザモードで実行されてインストーラーは走らないという事実。
※ビルドインAdministratorは標準では無効であるため有効にしたくない・・・

XPではRunasをくるんでユーザは切替を意識せずに使えるようなツールなどもあったわけですが・・・
どうにも動かないので一考してツールを作ることにしました。 コードをまるっと乗せるのが早いのですが諸事情で出来ませんので
ここでは概略をかいつまんで記載しておきます。
※にわかプログラムなのでコードは汚くて公開できませんorz

自作PGをカレントユーザで起動

実行ユーザをチェックし、指定ユーザでない場合は指定ユーザで自作PGを再起動する。
このとき注意すべき点がありユーザを切替えるので
Apprication.Exit();
System.Diagnostics.Process.start(startinfo);
あたりで起動する。
※startinfoに【UserName】,【Password】,【domain】を指定し、
【FileName】に自分のAPを指定する。ユーザを切替えるので【UseShellExecute】はfalseにセットする。

で、再起動したのち、実行ユーザが切り替わっていれば、
System.Diagnostics.Process.start(startinfo);
を利用し、起動したいAPを起動する。
※startinfoは【FileName】に起動したいAPをセットし、
【verb】に”runas”をセットする。
必要に応じて【WorkingDirectory】などをセットする。
ここで注意すべきは、XPでも利用する場合は、【verb】をセットする前に
バージョンをチェックし、6以上の場合のみセットするようにする。

・・・とこんな感じです。

« »