yotiky Tech Blog

とあるエンジニアの備忘録

C# - 管理者権限でコマンドプロンプトを実行する

VerbRunAs を設定して、UseShellExecutetrue にする。 Hidden が設定されている時に、WaitForExit で待機すると処理が終了しない可能性があるので注意。

public static class Cmd
{
    public static void CreateSymbolicLink(string src, string dest)
    {
        Execute($"/k mklink /D \"{dest}\" \"{src}\"");
    }

    private static void Execute(string args, bool hidden = true)
    {
        var startInfo = new System.Diagnostics.ProcessStartInfo();
        startInfo.FileName = "cmd.exe";
        startInfo.Arguments = args;
        startInfo.Verb = "RunAs";
        startInfo.UseShellExecute = true;
        if (hidden) startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        System.Diagnostics.Process.Start(startInfo);
    }
}