2

.NET3.5を使用しています。特定のファイルと特定のレジストリキーにアクセスするメソッドがあるとします。メソッドを制限する宣言型のセキュリティ定義を追加して、指定されたファイルとレジストリキーにのみアクセスできるようにし、他には何もアクセスできないようにします。

私が試してみると:

    [RegistryPermission(SecurityAction.PermitOnly, Read = "registry key path"]
    [FileIOPermission(SecurityAction.PermitOnly, Read = "file path")]

...ファイルパスは読み取れますが、レジストリキーは読み取れません-セキュリティ例外が発生します。

私が使用する場合:

    [RegistryPermission(SecurityAction.Demand, Read = "registry key path"]
    [FileIOPermission(SecurityAction.Demand, Read = "file path")]

...ファイルとレジストリキーを読み取ることができますが、他のファイルにアクセスすることもできます。

この効果を達成するためにこれらの方法をどのように使用すべきかについて何かが欠けていますか?

編集:

レジストリキーにアクセスするために使用しているコードは次のとおりです。

    RegistryKey rk = Registry.LocalMachine;
    rk = rk.OpenSubKey("MyKey");
    string registryVal = rk.GetValue("Test").ToString();

したがって、許可宣言は次のようになります。

[RegistryPermission(SecurityAction.PermitOnly, Read = @"HKEY_LOCAL_MACHINE\MyKey")]

ありがとう。

4

1 に答える 1

1

現在のコールチェーンに指定されたアクセス権がまだないSecurityAction.Demand場合は、セキュリティ例外がスローされると思います。アクセス権は変更されませんが(書き込み可能な他のファイルが制限されることはありません)、指定したパスにアクセスできない場合は、セキュリティ例外が発生するはずです。

指定しPermitOnlyた値から、使用する正しい値になります(指定したアイテムのみへのアクセスが制限されます)。したがって、レジストリキーコードが問題の原因であるかどうか疑問に思います。典型的な例の1つは、.NETレジストリクラスを使用して、「読み取り専用」または「読み取り/書き込み」としてキーを開くことができることです。読み取り/書き込みを開こうとすると、次の場合でもセキュリティ例外が発生します。値を変更しようとしないでください。

レジストリアクセスにコードを投稿できますか?

于 2010-03-11T12:10:09.000 に答える