// (c) 2006 Richard Grimes // www.grimes.demon.co.uk using System; using System.IO; using System.Text; using System.Security.AccessControl; class App { const string file = "test.txt"; public static void Main(string[] args) { if (args.Length == 0) { if (File.Exists(file)) File.Delete(file); DirectoryInfo dir = new DirectoryInfo("."); DirectorySecurity ds = dir.GetAccessControl(AccessControlSections.Access); FileSecurity fs = new FileSecurity(); fs.SetSecurityDescriptorBinaryForm(ds.GetSecurityDescriptorBinaryForm()); fs.AddAccessRule(new FileSystemAccessRule( @"BUILTIN\Users", FileSystemRights.ReadData | FileSystemRights.ReadExtendedAttributes, AccessControlType.Allow)); using (FileStream fWrite = new FileStream( file, FileMode.Create, FileSystemRights.WriteData, FileShare.None, 256, FileOptions.None, fs)) { byte[] buf = Encoding.ASCII.GetBytes("this is data"); fWrite.Write(buf, 0, buf.Length); } } else { using (FileStream fRead = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.None)) { StreamReader sr = new StreamReader(fRead); Console.WriteLine(sr.ReadToEnd()); } } } }