// (c) 2006 Richard Grimes // www.grimes.demon.co.uk using System; using System.IO; using System.Security.AccessControl; using System.Security.Principal; class App { static void Main(string[] args) { if (args.Length < 1) return; Console.WriteLine("For {0}:", args[0]); FileSystemSecurity sd = null; if (File.Exists(args[0])) { FileInfo fi = new FileInfo(args[0]); sd = fi.GetAccessControl(); } else if (Directory.Exists(args[0])) { DirectoryInfo di = new DirectoryInfo(args[0]); sd = di.GetAccessControl(); } else { Console.WriteLine("file or folder {0} does not exist", args[0]); return; } NTAccount owner = (NTAccount)sd.GetOwner(typeof(NTAccount)); Console.WriteLine("Owner is: {0}", owner.ToString()); NTAccount group = (NTAccount)sd.GetGroup(typeof(NTAccount)); Console.WriteLine("Primary group is: {0}", group.ToString()); Console.WriteLine("Access Rules:"); foreach (FileSystemAccessRule rule in sd.GetAccessRules(true, true, typeof(NTAccount))) { Console.WriteLine("\t{0} user: {1} rights: {2} [{2:x}]", rule.AccessControlType, rule.IdentityReference, rule.FileSystemRights); Console.WriteLine("\t\t{0}, inheritance: {1} propagation: {2}", rule.IsInherited ? "inherited right" : "direct right", rule.InheritanceFlags, rule.PropagationFlags); } } }