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-08T07:58:22.797 に答える
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-08T08:06:55.343 に答える