In the end, I came across this while studying the IpcChannel documentation.
The problem with IpcChannel is that Windows Named Pipes do not work correctly in UAC when the client works as a process with low integrity. Unfortunately, since I'm working on a plugin and not with a complete application, the low-level host module of the plugin means calling many Win32 APIs, including some new Vista-specific ones, and programmatically setting application ACL tokens, which is something what I really don't want to do.
Fortunately, some of the overloaded RegisterChannel () forms allow you to specify parameters in the System.Collections.IDictionary Hashtable object, some of which are related to security and handling of remote connections. More details here:
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);
, , , .