1

名前付きパイプのインターネットで多くの例を読みました。何らかの理由で、私はそれを機能させることができません。とにかくここに私のコードがあります:

サーバ:

    static void Main(string[] args)
    {
        NamedPipeServerStream server = new NamedPipeServerStream("1234");
        server.WaitForConnection();

        Console.Beep(); // connection successful! 
    }

クライアント:

    static void Main(string[] args)
    {                    
        NamedPipeClientStream client = new NamedPipeClientStream("1234");
        client.Connect();

        Console.WriteLine("Connected!");
        Console.Read();
    }

私は2つの異なる実行可能ファイルを持っています。最初にサーバー プログラムを開始し、次にクライアントを開始します。接続できないのはなぜですか?

4

1 に答える 1

2

考えられる理由の 1 つ: 2 つの異なるセキュリティ コンテキスト (つまり、1 つは「管理者として実行」、もう 1 つは通常のユーザーとして) からプロセスを起動しています。この場合、名前付きパイプにセキュリティを設定しないと接続を確立できません...

この名前の既存の名前付きパイプ (何らかの方法で、または別のユーザーの下で孤立している) も存在する可能性がありますが、この場合、少なくとも 1 つのプログラムが失敗することが予想されます。念のため、マシンの再起動を検討してください (または、Sysitnerals ツールのいずれかを使用して、この名前のパイプが既に存在するかどうかを確認してください)。

于 2013-02-13T17:06:01.727 に答える