2010-03-31 9 views
0

Je voudrais appliquer FileIOPermission sur l'ensemble de fichiers using le masque dans le nom de fichier, ex. sur tous les fichiers txt dans le dossier C: \ TMP:.Net - using FileIOPermission avec le masque dans le nom de fichier

[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(); 
     } 
    } 
} 

Cela jette ArgumentException "caractères illégaux dans le chemin."

Qu'est-ce qui ne va pas? Est-il possible de réaliser de toute façon?

Répondre

2

Vérification de la documentation MSDN pour la FileIOPermission Constructor, il est tout à fait spécifique qu'un ArgumentException sera jeté pour un certain nombre de conditions, y compris « Le paramètre de chemin ne spécifie pas le chemin absolu du fichier ou le répertoire »

Malheureusement interprétation Cela implique littéralement que vous ne pouvez pas utiliser des caractères génériques avec FileIOPermission. À court d'implémenter votre propre classe d'autorisation, le mieux que vous pourriez faire serait simplement de se référer au répertoire C: \ TMP à la place.