IpcChannelのドキュメントを調べているときに、自分でこれに遭遇しました。
IpcChannelの問題は、クライアントが低整合性プロセスとして実行されている場合、Windows名前付きパイプがUACで正しく機能しないことです。残念ながら、私は完全なアプリではなくプラグインに取り組んでいるため、プラグインホストの整合性が低いということは、Vistaに固有の新しいAPIを含む多数のWin32 APIを呼び出し、プログラムでアプリトークンACLを設定することを意味します。本当にやりたくない。
幸いなことに、RegisterChannel()のオーバーロードされた形式のいくつかでは、System.Collections.IDictionary Hashtableオブジェクトでオプションを指定できます。それらのいくつかは、セキュリティとリモート接続の処理に関係しています。詳細はこちら:
http://msdn.microsoft.com/en-us/library/bb187434%28VS.85%29.aspx
最終的にコードをTcpChannel実装に戻し、サーバー内のいくつかの変更を加えましたが、正常に機能しています。汗かいていない!
System.Collections.IDictionary sProperties = new System.Collections.Hashtable();
sProperties["port"] = SERVER_PORT;
sProperties["authorizedGroup"] = "INTERACTIVE";
sProperties["rejectRemoteRequests"] = true;
BinaryServerFormatterSinkProvider serverProvider = new BinaryServerFormatterSinkProvider();
TcpServerChannel channel = new TcpServerChannel(sProperties, serverProvider);
ChannelServices.RegisterChannel(channel, false);
あなたの答えを取り除いて申し訳ありませんが、私は私の質問に正確に答える何かに出くわしました。
トム