public void Open()
        {
            try
            {
                PipeSecurity pipeSecurity = new PipeSecurity();
                // deny network access, allow read/write to everyone locally and the owner/creator
                pipeSecurity.SetSecurityDescriptorSddlForm("D:(D;;FA;;;NU)(A;;0x12019f;;;WD)(A;;0x12019f;;;CO)");

                NamedPipeServerStream pipeListener =
                    new NamedPipeServerStream(
                        localPipe,
                        PipeDirection.InOut,
                        NamedPipeServerStream.MaxAllowedServerInstances,
                        PipeTransmissionMode.Message,
                        PipeOptions.Asynchronous,
                        4096,
                        4096,
                        pipeSecurity);
                pipeListener.BeginWaitForConnection(ClientAccepted, pipeListener);
            }
            catch (Exception ex)
            {
                Trace.TraceError("Unable to open listener: {0}", ex.Message);
                throw;
            }
        }