Problemas de segurança do WCF com pipes nomeados

Eu tenho uma configuração um pouco complicada que, claro, funciona bem no XP, mas engasga com o Windows 7. Pode parecer loucura, mas fazia sentido na época!

Eu tenho um aplicativo WPF que lança e, em seguida, lança outro aplicativo que se comunica com um dispositivo externo. Após o lançamento, estabelece comunicações com o novo processo usando o WCF (hospedado pelo novo processo) através de um pipe nomeado (net.pipe). Isso parece funcionar bem em qualquer sistema operacional.

Eu queria disponibilizar externamente algumas das funcionalidades do aplicativo WPF para um programa de linha de comando, então eu configurei outro serviço WCF, desta vez hospedado pelo aplicativo WPF e novamente o expus através de pipes nomeados. Mais uma vez, isso parece funcionar.

Em seguida, queria disponibilizar a funcionalidade do aplicativo WPF pela web. Agora, é importante que o aplicativo WPF seja executado a partir de uma conta de usuário comum, então achei que a melhor maneira de fazer isso funcionar no Windows 7 seria criar um serviço do Windows que fornecesse a parte do serviço da Web e a comunicasse de volta. Aplicação WPF através do mesmo pipe nomeado que funciona bem para a linha de comando. Eu implementei isso e ele funciona bem no XP, mas ele engole no Windows 7. O problemaparece estar com tentando estabelecer a conexão de pipe nomeado entre o serviço do windows e o aplicativo WPF.

Se eu executar o aplicativo WPF como administrador, tudo funcionará bem. Portanto, parece ser um problema com a conta que o serviço do Windows está sendo executado não pode se comunicar com uma conta de usuário regular que está hospedando o serviço WCF por meio de pipes nomeados. Existe uma maneira de fazer isso funcionar? Parece que um serviço WCF em execução em uma conta de usuário regular pode se comunicar usando pipes nomeados para outro aplicativo em execução na mesma conta, mas parece que não pode fazer a mesma coisa com uma conta diferente.

Estranhamente, o inverso parece funcionar. O serviço do windows, na verdade, também expõe um serviço com uma ligação de pipe nomeado (ele é usado como uma função de ativação, pois o serviço está em execução o tempo todo). Eu posso ligar a partir do aplicativo WPF para este serviço sem problemas.

Meu conhecimento de segurança é um pouco limitado. Alguém pode acender uma luz sobre o que está acontecendo?

questionAnswers(2)

yourAnswerToTheQuestion