コード例 #1
0
ファイル: CommandService.cs プロジェクト: stevencohn/OneMore
        private NamedPipeServerStream CreateSecuredPipe()
        {
            var user     = WindowsIdentity.GetCurrent().User;
            var security = new PipeSecurity();

            security.AddAccessRule(new PipeAccessRule(
                                       user, PipeAccessRights.FullControl, AccessControlType.Allow));

            security.SetOwner(user);
            security.SetGroup(user);

            return(new NamedPipeServerStream(
                       pipe, PipeDirection.In, 1,
                       PipeTransmissionMode.Byte, PipeOptions.Asynchronous,
                       MaxBytes, MaxBytes, security));
        }
コード例 #2
0
        PipeSecurity makePipeSecurity()
        {
            var pipeSecurity = new PipeSecurity();
            var admins       = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
            var system       = new SecurityIdentifier(WellKnownSidType.LocalSystemSid, null);

            if (IsElevated)
            {
                pipeSecurity.SetOwner(admins);
                pipeSecurity.SetGroup(system);
            }
            pipeSecurity.AddAccessRule(new PipeAccessRule(admins, PipeAccessRights.FullControl, AccessControlType.Allow));
            pipeSecurity.AddAccessRule(new PipeAccessRule(system, PipeAccessRights.FullControl, AccessControlType.Allow));
            pipeSecurity.AddAccessRule(new PipeAccessRule(new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null),
                                                          PipeAccessRights.ReadWrite, AccessControlType.Allow));
            return(pipeSecurity);
        }