C# 如何处理来自用户代码的UnauthorizedAccessException

C# 如何处理来自用户代码的UnauthorizedAccessException,c#,exception-handling,regedit,unauthorizedaccessexcepti,C#,Exception Handling,Regedit,Unauthorizedaccessexcepti,在我使用的Windows应用程序中,我在注册表中做了一些更改,比如删除了一个特定的键,在一些测试场景中,比如在安装了UAC的Vista机器中,我得到了System.UnauthorizedAccessException。我的代码如下所示: try { //delete registry keys } catch (UnauthorizedAccessException ex) { //handling } catch (Exception genEx) { //handl

在我使用的Windows应用程序中,我在注册表中做了一些更改,比如删除了一个特定的键,在一些测试场景中,比如在安装了UAC的Vista机器中,我得到了
System.UnauthorizedAccessException
。我的代码如下所示:

try
{
    //delete registry keys
}
catch (UnauthorizedAccessException ex)
{
    //handling
}
catch (Exception genEx)
{
    //handling
}

但是应用程序仍然会崩溃,而不是由catch块处理。有什么方法可以处理它吗?

您可能正在从catch块引发另一个异常。
尝试注释catch块中的所有行,它应该可以正常工作。

最常见和最明显的原因是正在尝试访问的路径/文件程序无法访问其运行时使用的标识


请在此处阅读更多信息,您必须为应用程序设置管理员访问权限

为此,只需右键单击并选择“属性”

检查并以管理员身份运行检查并运行应用程序

要以管理员身份为所有用户运行,请单击“所有用户”按钮,然后选择“以管理员身份为所有用户运行”。这将始终以管理员权限为所有用户运行应用程序


您确定导致应用程序崩溃的代码在try语句中吗?您必须能够捕获此异常。也许你可以给我们更多的代码(我的意思是至少是抛出异常的调用)来帮助修复它。对不起,伙计们。这是我这边的错误。我把日志记录到了一个我无法访问的位置,在catch块中我也有日志记录。再一次抱歉,而且还要感谢。我有一个类似的问题,关于第一次捕获,我“抛出ex”;但随后它到达了通用Exeption(第二个,genEx),并表示未经处理的UnauthorizedAccessException。这是我的域服务类的基础。会话已结束,但我想做的是学习会话已结束?+1请详细说明一下,最后这是正确答案,@niranjan可能/应该接受它!我在发布问题的当天发现了这个问题,并将其添加为评论。。。我忘了将它标记为已回答..:(抱歉,伙计们……如果这引起了混乱:)@Adriano:谢谢提醒。。我将此标记为答案:)为什么是-1?有人能直言不讳吗?+1。。是的,这就是问题所在。。我在问题中加了一句话。。虽然我没有添加为答案并标记:(…我没有注意到评论,但标记可能会帮助其他用户找到正确的答案.)。。