0

可能重复:
检查注册表权限而不抛出异常

检查 RegistryKey 编辑的权限如何更正确?现在我写这样的代码:

RegistryKey regKey = null;
try {
    regKey = Registry.LocalMachine.OpenSubKey("Software", true);
}
catch (SecurityException ex) {
    Console.WriteLine("SecurityException: {0}", ex.Message);
}
catch (Exception ex) {
    Console.WriteLine("Exception: {0}", ex.Message);
}
if (null == regKey)
    Console.WriteLine("Registry key not exists, or you have not necessary permission for edit it.");
else
    Console.WriteLine("Registry key successfully opened. You have necessary permission for edit it.");

但是异常对性能影响非常大。我可以在没有 try/catch 的情况下检查它吗?

最好的问候,安德烈

4

3 回答 3

0

您应该仅在初始化时阅读注册表设置。不要在每种方法中读取注册表设置。那么异常的性能损失应该不会显着影响整个程序。

于 2012-10-08T08:06:55.343 回答
0

你检查过 RegistryPermission 类吗?在进行任何注册表操作之前,您应该调查您是否真的拥有该权限。就像是:

     try
    {
        var permission = new RegistryPermission(RegistryPermissionAccess.Read, @"PATH\TO\YOUR\KEY");
        permission.Demand();

// your code here


    }
    catch (System.Security.SecurityException ex)
    {
        // Handle exc
    }

成功后您将继续,但是,如果缺少权限,则会发生异常。

于 2012-10-08T07:35:01.483 回答
0

但是异常对性能影响非常大。

你有没有分析过?除了一个非常人为的情况之外,我无法想象任何其他的情况。

于 2012-10-08T07:58:22.797 回答