Changeset 1317

Show
Ignore:
Timestamp:
11/14/2009 6:27:27 AM (10 months ago)
Author:
lowjoel
Message:

Allow users to control an elevated instance of Eraser from the Explorer context menu.

Location:
trunk/eraser6
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/eraser6/Eraser.Manager/RemoteExecutor.cs

    r1249 r1317  
    3030using System.Runtime.Serialization; 
    3131using System.Runtime.Serialization.Formatters.Binary; 
     32using System.Security.Principal; 
     33using System.Security.AccessControl; 
    3234 
    3335namespace Eraser.Manager 
     
    8991        public static readonly string ServerName = 
    9092            "Eraser-FB6C5A7D-E47F-475f-ABA4-58F4D24BB67E-RemoteExecutor-" + 
    91             System.Security.Principal.WindowsIdentity.GetCurrent().User.ToString(); 
     93            WindowsIdentity.GetCurrent().User.ToString(); 
    9294 
    9395        /// <summary> 
     
    136138                    continue; 
    137139 
     140                PipeSecurity security = new PipeSecurity(); 
     141                security.AddAccessRule(new PipeAccessRule( 
     142                    WindowsIdentity.GetCurrent().User, 
     143                    PipeAccessRights.FullControl, AccessControlType.Allow)); 
     144 
    138145                //Otherwise, a new instance can be created. Create it and wait for connections. 
    139146                NamedPipeServerStream server = new NamedPipeServerStream(ServerName, 
    140147                    PipeDirection.InOut, maxServerInstances, PipeTransmissionMode.Message, 
    141                     PipeOptions.Asynchronous); 
     148                    PipeOptions.Asynchronous, 128, 128, security); 
    142149                server.BeginWaitForConnection(EndWaitForConnection, server); 
    143150                 
  • trunk/eraser6/Eraser/Program.cs

    r1304 r1317  
    3434using System.Diagnostics; 
    3535using System.ComponentModel; 
     36using System.Security.Principal; 
     37using System.Security.AccessControl; 
    3638 
    3739using Eraser.Manager; 
     
    418420            while (pipeServer.ThreadState != System.Threading.ThreadState.AbortRequested) 
    419421            { 
     422                PipeSecurity security = new PipeSecurity(); 
     423                security.AddAccessRule(new PipeAccessRule( 
     424                    WindowsIdentity.GetCurrent().User, 
     425                    PipeAccessRights.FullControl, AccessControlType.Allow)); 
    420426                using (NamedPipeServerStream server = new NamedPipeServerStream(instanceID, 
    421                     PipeDirection.In, 1, PipeTransmissionMode.Message, PipeOptions.Asynchronous)) 
     427                    PipeDirection.In, 1, PipeTransmissionMode.Message, PipeOptions.Asynchronous, 
     428                    128, 128, security)) 
    422429                { 
    423430                    ServerAsyncInfo async = new ServerAsyncInfo();