2012-05-09 15 views
5

Tengo una aplicación de administrador que se ejecuta con privilegios elevados y la necesito para almacenar algunos archivos confidenciales en un directorio al que solo pueden acceder los administradores del sistema.Crear un directorio accesible solo para el administrador

Probablemente tiene que ver con la siguiente llamada, pero no estoy seguro de cómo configurarlo.

Directory.CreateDirectory(@"C:\SomePath", new AccessControl.DirectorySecurity() { AccessRightType = ?, AccessRuleType = ?, AuditRuleType = ?); 

Si hay una mejor manera de lograr lo mismo, hágamelo saber. Gracias.

EDIT: Encontró una buena implementación here. Dejará la pregunta abierta por un día en caso de que haya otras sugerencias.

+0

¿Por qué no encriptas los archivos en su lugar? – MatteKarla

+0

Yo digo que la encriptación sería el camino a seguir. –

+0

Los archivos ya están encriptados. El control de acceso requerido es cumplir con las regulaciones. Sin alternativas –

Respuesta

5

Encontré una buena solución here.

FileSystemAccessRule administratorRule = new FileSystemAccessRule("Administrators", FileSystemRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow); 

FileSystemAccessRule guestRule = new FileSystemAccessRule("Guest", FileSystemRights.CreateDirectories | FileSystemRights.CreateFiles, AccessControlType.Allow); 

DirectorySecurity dirSec = new DirectorySecurity(); 
dirSec.AddAccessRule(administratorRule); 
dirSec.AddAccessRule(guestRule); 

Directory.CreateDirectory(@"C:\GuestTemp", dirSec); 
Cuestiones relacionadas