Windows UAC - 如何处理用户取消

时间:2014-02-14 13:51:20

标签: c# .net windows exception-handling uac

我需要使用提升的权限生成一个进程,这会导致为用户弹出UAC提示符:

using (process = new Process())
{
    process.StartInfo.FileName = fileName;
    process.StartInfo.Arguments = string.Join(" ", arg1, arg2, arg3);
    process.StartInfo.Verb = "runas";
    process.Start();
}

我遇到的问题是,如果用户在UAC提示中选择“否”,则进程对象将抛出一个异常,指出“操作已被用户取消”。如果用户选择“否”,则父进程应该正常继续(生成的进程完全是可选的)。除了捕获异常并且什么也不做之外,还有更好的方法来处理这种情况吗?

2 个答案:

答案 0 :(得分:2)

你还想做什么而不是捕捉异常而什么都不做?这是我唯一能想到的。

答案 1 :(得分:1)

您需要捕获该错误,如果您使用后台工作人员,则不会收到任何异常错误。尽管如此,不单独捕获异常仍然是一种不好的做法。

这是完成的方式:

try
{
    //your code here
        using (process = new Process())
            {
                process.StartInfo.FileName = fileName;
                process.StartInfo.Arguments = string.Join(" ", arg1, arg2, arg3);
                process.StartInfo.Verb = "runas";
                process.Start();

            }
    //end code
}
catch(System.ComponentModel.Win32Exception)
{
//Do Something or Leave it empty to swallow the exception
}