.NET 3.5でメソッドの宣言型セキュリティ - どのように私は、メソッドのアクセス権をロックダウンするのですか?

StackOverflow https://stackoverflow.com/questions/2424649

質問

私は、.NET 3.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")]

...それは私がファイルとレジストリキーを読み込むことができますが、また、私は他のファイルにアクセスすることができます。

私は、これらのメソッドは、この効果をacheiveするために使用されるべきかについての何かが足りないのですか?

編集

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

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

、したがって、許可宣言があります:

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

感謝します。

役に立ちましたか?

解決

私は何SecurityAction.Demandないあなたの現在のコールチェーンががすでにの指定したアクセス権を持っていない場合、セキュリティ例外をスローだと思います。それは(それはあなたが書くことができ、他のどのファイル制限しないように)あなたが持っているアクセス権を変更しませんが、あなたが指定したパスへのアクセス権を持っていない場合は、セキュリティ例外が表示されるはずです。

あなたが指定したものを、PermitOnlyが正しい値を用いることであろうから、

(それはあなたが指定した項目だけへのアクセスを制限し)、そして私は、問題がどこにあるか、あなたのレジストリキーコードがあるかどうかを疑問に思います。 1つの典型的な例はいずれかの「読み取り専用」または「読み書き可能」として.NETレジストリクラスはキーを開くために使用することができるということである - あなたは読み書きを開こうとすると、あなたもあなたの場合、セキュリティ例外を取得します値を変更しようとすることはありません。

あなたがあなたのレジストリへのアクセスにコードを投稿することができますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top