Я сам наткнулся на это, изучая документацию IpcChannel.
Проблема с IpcChannel заключается в том, что именованные каналы Windows не работают правильно под UAC, когда клиент работает как процесс с низким уровнем целостности. К сожалению, поскольку я работаю над плагином, а не над полным приложением, низкая целостность хоста плагина означает вызов связки Win32 API, включая некоторые новые, специфичные для Vista, и программную настройку ACL токенов приложений, что я действительно не хочу делать.
К счастью, некоторые из перегруженных форм RegisterChannel () позволяют вам указывать опции в объекте Hashtable System.Collections.IDictionary, некоторые из них связаны с безопасностью и обработкой удаленных соединений. Больше информации здесь:
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);
Извините, что забрал ваш ответ, но я наткнулся на то, что точно отвечает на мой вопрос.
Том