From b61b7b54312b0276d07a1b0bbb536591cc0ce847 Mon Sep 17 00:00:00 2001 From: Matthew Bowra-Dean Date: Wed, 10 Nov 2010 17:14:58 +1300 Subject: [PATCH] Only modify pipe ACL when running as admin --- OpenRA.Utility/Program.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/OpenRA.Utility/Program.cs b/OpenRA.Utility/Program.cs index 8e67287b97..d1731e7346 100644 --- a/OpenRA.Utility/Program.cs +++ b/OpenRA.Utility/Program.cs @@ -51,9 +51,18 @@ namespace OpenRA.Utility if (args.Length > 1 && args[1] == "--pipe") { piping = true; - var ps = new PipeSecurity(); - ps.AddAccessRule(new PipeAccessRule("EVERYONE", PipeAccessRights.FullControl, System.Security.AccessControl.AccessControlType.Allow)); - NamedPipeServerStream pipe = new NamedPipeServerStream("OpenRA.Utility", PipeDirection.Out, 1, PipeTransmissionMode.Byte, PipeOptions.None, 1024, 1024, ps); + NamedPipeServerStream pipe; + var id = WindowsIdentity.GetCurrent(); + var principal = new WindowsPrincipal(id); + if (principal.IsInRole(WindowsBuiltInRole.Administrator)) + { + var ps = new PipeSecurity(); + ps.AddAccessRule(new PipeAccessRule("EVERYONE", PipeAccessRights.FullControl, System.Security.AccessControl.AccessControlType.Allow)); + pipe = new NamedPipeServerStream("OpenRA.Utility", PipeDirection.Out, 1, PipeTransmissionMode.Byte, PipeOptions.None, 1024, 1024, ps); + } + else + pipe = new NamedPipeServerStream("OpenRA.Utility", PipeDirection.Out); + pipe.WaitForConnection(); Console.SetOut(new StreamWriter(pipe) { AutoFlush = true }); }