もくじ
https://tera1707.com/entry/2022/02/06/144447
やりたいこと
自分のアプリから、別のexeを管理者で起動したい。
やりかた
Process
クラスのItartInfo
のVerb
を"RunAs"にする。
またその際、UseShellExecute
をtrueにして、そのプロセスをStartする。
そうすると、UACが開いて、管理者でそのプロセスが起動する。
using System.Diagnostics; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { Process proc = new Process(); proc.StartInfo.FileName = @"notepad.exe"; proc.StartInfo.Verb = "RunAs"; // ★コレ proc.StartInfo.UseShellExecute = true; // ★コレもわすれないこと proc.Start(); proc.WaitForExit(); proc.Close(); } } }
※UseShellExecute
をtrueにしないと、管理者になってくれなかった。
たしかUseShellExecute
は、.netFramework4.8まではデフォルトでtrueだったが、.netcore以降?でfalseになったので、trueを書いてあげないと上記が動かなくなった。
(ネットで調べると、結構UseShellExecute
をtrueにしてないサンプルが多いのはそのせい?)