Csharp/C Sharp by API/System.Security.AccessControl/FileSecurity

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

FileSecurity.AddAccessRule

<source lang="csharp"> using System; using System.IO; using System.Security.AccessControl; class MainClass {

   static void Main(string[] args) {
       FileStream stream;
       string fileName;
       fileName = Path.GetRandomFileName();
       using (stream = new FileStream(fileName, FileMode.Create)) {
           // Do something.
       }
       SetRule(fileName, "Everyone", FileSystemRights.Read, AccessControlType.Deny);
       try {
           stream = new FileStream(fileName, FileMode.Create);
       } catch (Exception ex) {
           Console.WriteLine(ex.ToString());
       } finally {
           stream.Close();
           stream.Dispose();
       }
   }
   static void AddRule(string filePath, string account, FileSystemRights rights, AccessControlType controlType) {
       FileSecurity fSecurity = File.GetAccessControl(filePath);
       fSecurity.AddAccessRule(new FileSystemAccessRule(account, rights, controlType));
       File.SetAccessControl(filePath, fSecurity);
   }
   static void SetRule(string filePath, string account, FileSystemRights rights, AccessControlType controlType) {
       FileSecurity fSecurity = File.GetAccessControl(filePath);
       fSecurity.ResetAccessRule(new FileSystemAccessRule(account, rights, controlType));
       File.SetAccessControl(filePath, fSecurity);
   }

}


 </source>


FileSecurity.ResetAccessRule

<source lang="csharp"> using System; using System.IO; using System.Security.AccessControl; static class MainClass {

   static void Main(string[] args)
   {
       FileStream stream = null;
       string fileName = "c:\\test.txt";
       // Deny "Everyone" access to the file
       FileSecurity fSecurity = File.GetAccessControl(fileName);
       fSecurity.ResetAccessRule(new FileSystemAccessRule("Everyone",FileSystemRights.Read, AccessControlType.Deny));
       File.SetAccessControl(fileName, fSecurity);
       // Attempt to access file.
       try
       {
           stream = new FileStream(fileName, FileMode.Create);
       }
       catch (Exception ex)
       {
           Console.WriteLine("Exception thrown: ");
           Console.WriteLine(ex.ToString());
       }
       finally
       {
           stream.Close();
           stream.Dispose();
       }
   }

}


 </source>