启动需要在netcore中触发UAC的进程

时间:2017-01-01 19:46:59

标签: c# .net-core

我经常需要启动外部进程,所以我写了一个方便的方法来轻松实现。其中一个进程需要触发UAC以询问用户是否允许。我做了一些研究,发现除了将Verb设置为ProcessStartInfo之外,将runas对象的UseShellExecute属性设置为true应该可以解决问题。

private static void StartProcess(string fileName, string arguments, bool elevated)
{
    var start = new ProcessStartInfo
    {
        UseShellExecute = false,
        CreateNoWindow = true,
        Arguments = arguments,
        FileName = fileName
    };

    if (elevated) 
    {
        start.Verb = "runas";
        start.UseShellExecute = true;
    }

    int exitCode = 0;
    using (var proc = new Process { StartInfo = start })
    {
        proc.Start();
        proc.WaitForExit();
        exitCode = proc.ExitCode;
    }

    if (exitCode != 0)
    {
        var message = string.Format(
            "Error {0} executing {1} {2}",
            exitCode,
            start.FileName,
            start.Arguments);
        throw new InvalidOperationException(message);
    }
}

但是Verb属性在netcore中不可用,因此我无法弄清楚如何获得相同的结果。有什么建议吗?

0 个答案:

没有答案