C#で外部アプリケーションを管理者として実行する

System.Diagnostics.Processクラスを使うと外部のアプリケーションを起動する事が出来る。

詳細はこちら↓

C#で外部アプリケーションを起動する

 

 

Processクラスでは起動させるとき動詞を指定する事が出来る。

起動するファイルの種類によって利用できる動詞が変わるが、EXEファイルの場合管理者として実行させる為の動詞がある。

EXEファイルを管理者として実行する

以下はペイントを管理者として実行する例。

        try
        {
            var proc = new System.Diagnostics.Process();

            proc.StartInfo.FileName = @"c:\Windows\System32\mspaint.exe";
            proc.StartInfo.Verb = "RunAs";
            proc.StartInfo.UseShellExecute = true;
            proc.Start();
        }
        catch (Exception e)
        {
        }

StartInfoプロパティVerbへ"RunAs"を指定する。

動詞(Verb )を利用する場合はStartInfoプロパティUseShellExecuteがTrueである必要がある。

 

startメソッド実行時に、UACによる権限昇格の確認ダイアログが表示されて管理者として起動する事が出来る。ちなみにこの確認ダイアログで「いいえ」が選択されると例外が発生する。

利用可能な動詞の種類を知る

起動するファイルの種類によって利用できる動詞は異なるが、指定のファイルで利用できる動詞の種類はStartInfoプロパティVerbsから取得する事が出来る。

尚、Verbsを使う前に必ずStartInfoプロパティFileNameへ起動するファイル名を指定しておく必要がある。