C#:当用户拒绝授予提升的权限时如何捕获异常?

C#: How to catch the exception when user refuses to grant elevated privileges?

在我的 C# 代码中大致是这样的:

    public void RunCommand()
    {
        var processStartInfo = new ProcessStartInfo(
            "notepad.exe")
        {
            UseShellExecute = true,
            Verb = "Runas",
        };
        var process = Process.Start(processStartInfo);
        process.WaitForExit(1000);
    }

当 运行 时,这会提示用户授予提升的权限。如果用户拒绝,调用将抛出 Win32Exception 和文本 "The operation was cancelled by the user"。

我想专门捕获这个异常,即将它和其他异常区分开来。我想知道用户已经取消了。

我能有理由相信当抛出 Win32Exception 时,可能是这个吗?还是调用会因各种其他原因抛出 Win32Exception?我不想在错误消息上开始字符串匹配,因为这可能因用户设置而异...

我最终这样做了,这似乎适用于我的系统:

    public void RunCommand()
    {
        var processStartInfo = new ProcessStartInfo(
            "notepad.exe")
        {
            UseShellExecute = true,
            Verb = "Runas",
        };
        var process = Process.Start(processStartInfo);
        process.WaitForExit(1000);
    }
    catch (Win32Exception e)
    {
        if (e.ErrorCode == 1223 || e.ErrorCode == -2147467259)
            // Throw easily recognizable custom exception.
            throw new ElevatedPermissionsDeniedException("Unable to get elevated privileges", e);
        else
            throw;
    }