Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. // OrtizOL - xCSw - http://ortizol.blogspot.com
  2.  
  3. using System;
  4. using System.IO;
  5. using System.Security.AccessControl;
  6.  
  7. namespace Receta.CSharp.R0522
  8. {
  9.     public class AccesoArchivo
  10.     {
  11.         public static void Main()
  12.         {
  13.             Console.WriteLine(Environment.NewLine);
  14.            
  15.             FileStream fs;
  16.             string nombreArchivo;
  17.            
  18.             // Crea un archivo con acceso a todos los usuarios:
  19.             Console.WriteLine("Presione cualquier tecla para crear un archivo...");
  20.             Console.ReadKey(true);
  21.            
  22.             // Nombre aleatorio para el archivo:
  23.             nombreArchivo = Path.GetRandomFileName();
  24.            
  25.             using(fs = new FileStream(nombreArchivo, FileMode.Create))
  26.             {
  27.                 // Escritura del archivo...
  28.             }
  29.            
  30.             Console.WriteLine ("Se ha creado el archivo: {0}\n", nombreArchivo);
  31.            
  32.             Console.WriteLine ("Presione cualquier tecla para denegar el acceso al archivo a todos los usuarios...");
  33.             Console.ReadKey(true);
  34.             EstablecerRegla(nombreArchivo, "Todos", FileSystemRights.Read, AccessControlType.Deny);
  35.             Console.WriteLine ("Se han removido los derechos de acceso de 'Todos'.");
  36.             Console.WriteLine ();
  37.            
  38.             // Intento de acceso al archivo restringido:
  39.             Console.WriteLine ("Presione cualquier tecla para intentar acceder al archivo {0}...\n", nombreArchivo);
  40.             Console.ReadKey(true);
  41.            
  42.             try
  43.             {
  44.                 fs = new FileStream(nombreArchivo, FileMode.Create);
  45.             }
  46.             catch(Exception ex)
  47.             {
  48.                 Console.WriteLine("Excepción generada: {0}", ex.Message);
  49.             }
  50.             finally
  51.             {
  52.                 fs.Close();
  53.                 fs.Dispose();
  54.             }
  55.            
  56.             Console.WriteLine(Environment.NewLine);
  57.         }
  58.        
  59.         // Método para establecer reglas a un archivo:
  60.         private static void EstablecerRegla(string rutaArchivo, string cuenta,
  61.                                             FileSystemRights permisos, AccessControlType tipoControl)
  62.         {
  63.             // Obtiene el objeto FileSecurity, el cual representa
  64.             // la configuración de seguridad actual del archivo:
  65.             FileSecurity seguridadArchivo = File.GetAccessControl(rutaArchivo);
  66.            
  67.             // Configura relga de seguridad:
  68.             seguridadArchivo.ResetAccessRule(new FileSystemAccessRule(cuenta,
  69.                                              permisos, tipoControl));
  70.                                              
  71.             // Establece la regla de seguridad:
  72.             File.SetAccessControl(rutaArchivo, seguridadArchivo);
  73.         }
  74.     }
  75. }