I have an Internet Explorer add-in, written in C#, which talks via a WCF named-pipe to a .NET desktop application. The desktop app creates the ServiceHost for the netNamedPipeBinding, and each instance of the IE add-in creates a ChannelFactory to talk to the app. Everything works fine under Windows XP, but an exception is thrown under IE's protected mode in Windows 7.
System.ServiceModel.CommunicationException: Cannot connect to endpoint 'net.pipe://localhost/MyApp.MyID'. ---> System.IO.PipeException: A pipe endpoint exists for '\.\pipe...guid...', but the connect failed: Access is denied. (5, 0x5)
Running the add-in under protected mode is a scenario I must support. My understanding is that if I lower the integrity level of the named-pipe, then my IE add-in will be allowed to talk through it. My question is how to do that. I have things setup to use WCF, and would preferably like to keep it that way. Can I make WCF create the named pipe with the lower integrity level? What code do I write to make that happen?