Ejemplo n.º 1
0
        public CommServer(ICommServerImpl callbacks) : base(callbacks)
        {
            int numsecretbytes = 16;

            byte[] secretbytes           = new byte[numsecretbytes];
            RNGCryptoServiceProvider rnd = new RNGCryptoServiceProvider();
            int i;

            rnd.GetBytes(secretbytes);
            secret = "";
            for (i = 0; i < numsecretbytes; i++)
            {
                secret = secret + String.Format("{0:x2}", secretbytes[i]);
            }
            PipeSecurity sec = new PipeSecurity();

            sec.AddAccessRule(
                new PipeAccessRule(
                    new System.Security.Principal.SecurityIdentifier(
                        System.Security.Principal.WellKnownSidType.WorldSid,
                        null),
                    PipeAccessRights.ReadWrite,
                    System.Security.AccessControl.AccessControlType.Allow));
            sec.AddAccessRule(new PipeAccessRule(System.Security.Principal.WindowsIdentity.GetCurrent().Name, PipeAccessRights.FullControl,
                                                 System.Security.AccessControl.AccessControlType.Allow));

            Pipe = new NamedPipeServerStream(PIPENAME,
                                             PipeDirection.InOut, 1, PipeTransmissionMode.Byte,
                                             PipeOptions.Asynchronous, 1024 * 1024, 1024 * 1024, sec);
            SetPipe(Pipe);
            this.callbacks = callbacks;
            Pipe.BeginWaitForConnection(HandleConnected, this);
        }
Ejemplo n.º 2
0
        public CommServer(ICommServerImpl callbacks)
            : base(callbacks)
        {
            int numsecretbytes=16;
            byte[] secretbytes = new byte[numsecretbytes];
            RNGCryptoServiceProvider rnd = new RNGCryptoServiceProvider();
            int i;
            rnd.GetBytes(secretbytes);
            secret="";
            for (i = 0; i < numsecretbytes; i++)
            {
                secret = secret + String.Format("{0:x2}", secretbytes[i]);
            }
            PipeSecurity sec = new PipeSecurity();
            sec.AddAccessRule(
                    new PipeAccessRule(
                        new System.Security.Principal.SecurityIdentifier(
                            System.Security.Principal.WellKnownSidType.WorldSid,
                            null),
                        PipeAccessRights.ReadWrite,
                        System.Security.AccessControl.AccessControlType.Allow));
            sec.AddAccessRule(new PipeAccessRule(System.Security.Principal.WindowsIdentity.GetCurrent().Name, PipeAccessRights.FullControl,
                System.Security.AccessControl.AccessControlType.Allow));

            Pipe = new NamedPipeServerStream(PIPENAME,
                PipeDirection.InOut, 1, PipeTransmissionMode.Byte,
                PipeOptions.Asynchronous, 1024*1024, 1024*1024, sec);
            SetPipe(Pipe);
            this.callbacks = callbacks;
            Pipe.BeginWaitForConnection(HandleConnected, this);
        }