代码之家  ›  专栏  ›  技术社区  ›  Maksym Gontar

.NET-使用文件名中带掩码的FileIOPermission

  •  0
  • Maksym Gontar  · 技术社区  · 15 年前

    我想在文件名中使用mask的一组文件上应用fileiopermission,例如在文件夹C:\tmp:

    [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“路径中的非法字符”。

    怎么了?无论如何都有可能实现吗?

    1 回复  |  直到 10 年前
        1
  •  2
  •   David Gardiner    15 年前

    正在检查msdn文档中的 FileIOPermission Constructor ,对于许多条件(包括“path参数未指定文件或目录的绝对路径”),引发ArgumentException是非常具体的。

    不幸的是,从字面上解释这意味着您不能将通配符与fileiopermission一起使用。

    除了实现自己的权限类之外,最好的方法就是引用c:\tmp目录。