0

ファイル名にマスクを使用して、一連のファイルに FileIOPermission を適用したいと思います。フォルダー C:\TMP 内のすべての txt ファイル:

[type: FileIOPermission(SecurityAction.PermitOnly, Read = @"C:\TMP\*.txt")]
class SomeClass
{
    static void testPermissions()
    {
        Console.WriteLine("allowed action");
        File.OpenRead(@"C:\TMP\1.txt"); // <--- here goes exception
        Console.WriteLine("denied action");
        try
        {
            File.Create(@"C:\TMP\2.txt");
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        finally
        {
            Console.ReadKey();
        }
    }
}

これにより、ArgumentException "Illegal characters in path." がスローされます。

なにが問題ですか?とにかく達成することは可能ですか?

4

1 に答える 1

2

MSDN のドキュメントでFileIOPermission Constructorを確認すると、「パス パラメータでファイルまたはディレクトリへの絶対パスが指定されていない」など、さまざまな条件で ArgumentException がスローされることが明確にわかります。

残念ながら、これを文字通りに解釈すると、FileIOPermission でワイルドカードを使用できないことを意味します。

独自のパーミッション クラスを実装する以外に、代わりに C:\TMP ディレクトリを参照するのが最善の方法です。

于 2010-03-31T05:49:22.530 に答える