2010-11-28 5 views
0

J'ai un peu de mal avec le stockage des autorisations de dossier. J'ai pu trouver de la documentation sur les écrire et les lire. Ce que j'essaie de faire est de lire les permissions sur un dossier pour un utilisateur spécifique> Stocker> changer les permissions> après la fin du programme d'installation, changer les permissions.C# Autorisations de dossier de stockage

Je l'ai tout en bas (uniquement en raison du code de nombreux autres) SAUF comment stocker les autorisations de dossier d'origine et le rétablir. Je me ferai un plaisir de lire tout ce que vous suggérez, nous recevons plusieurs erreurs fatales avec le logiciel et ceci est une étape pour résoudre beaucoup d'entre eux. Toute aide est la bienvenue et appréciée.

Vous trouverez ci-dessous un exemple de définition des autorisations. Oui, je sais que je dois tout le monde, mais il est juste pour le test en ce moment

public void setPermDir() 
    { 
     try 
     { 
      string DirectoryName = "C:\\Temp1\\"; 

      Console.WriteLine("Adding access control entry for " + DirectoryName); 

      // Add the access control entry to the directory. 
      AddDirectorySecurity(DirectoryName, @"Everyone", FileSystemRights.FullControl, AccessControlType.Allow); 


      Console.WriteLine("Done."); 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine(e); 
     } 

     Console.ReadLine(); 
    } 

    // Adds an ACL entry on the specified directory for the specified account. 
    public static void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType) 
    { 
     // Create a new DirectoryInfo object. 
     DirectoryInfo dInfo = new DirectoryInfo(FileName); 

     // Get a DirectorySecurity object that represents the 
     // current security settings. 
     DirectorySecurity dSecurity = dInfo.GetAccessControl(); 

     // Add the FileSystemAccessRule to the security settings. 
     dSecurity.AddAccessRule(new FileSystemAccessRule(Account, 
                 Rights, 
                 ControlType)); 

     // Set the new access settings. 
     dInfo.SetAccessControl(dSecurity); 

    } 

Répondre

0

Si vous retournez le dSecurity DirectorySecurity de AddDirectorySecurity alors vous pouvez appeler Directory.SetAccessControl(directoryName, dSecurity); une fois que vous avez terminé avec les règles d'accès modifiées.

Mise à jour

Si juste SetAccessControl ne fonctionne pas à l'étape suivante pourrait être explicitement supprimer les autorisations que vous avez accordées à l'aide FileSystemSecurity.RemoveAccessRule.

Il suffit de garder une référence à la FileSystemAccessRule vous créez:

FileSystemAccessRule toRemoveWhenDone = new FileSystemAccessRule(Account, Rights, ControlType); 
+0

Oui, je suis en utilisant cette méthode. Je n'ai juste pas vu comment stocker la permission pour un utilisateur spécifique. –

Questions connexes