WCF-Sicherheitsprobleme mit Named Pipes

Ich habe ein etwas kompliziertes Setup, das in XP natürlich gut funktioniert, aber unter Windows 7 drosselt es. Es mag wie Wahnsinn erscheinen, aber es machte zu der Zeit Sinn!

Ich habe eine WPF-Anwendung, die eine andere Anwendung startet, die mit einem externen Gerät kommuniziert. Nach dem Start wird die Kommunikation mit dem neuen Prozess über eine Named Pipe (net.pipe) mithilfe von WCF (vom neuen Prozess gehostet) hergestellt. Dies scheint auf beiden Betriebssystemen gut zu funktionieren.

Ich wollte einen Teil der Funktionalität der WPF-Anwendung extern für ein Befehlszeilenprogramm verfügbar machen, also richtete ich einen weiteren WCF-Dienst ein, der diesmal von der WPF-Anwendung gehostet und erneut über Named Pipes verfügbar gemacht wurde. Auch dies scheint zu funktionieren.

Als nächstes wollte ich die Funktionalität der WPF-Anwendung über das Web verfügbar machen. Nun ist es wichtig, dass die WPF-Anwendung von einem regulären Benutzerkonto aus ausgeführt werden kann. Daher dachte ich, dass der beste Weg, um diese Funktion unter Windows 7 zu nutzen, darin besteht, einen Windows-Dienst zu erstellen, der den Webdienstteil bereitstellt und ihn mit dem Internet kommunizieren lässt WPF-Anwendung über die gleichnamige Pipe, die für die Befehlszeile geeignet ist. Ich habe dies implementiert und es läuft gut unter XP, aber es drosselt unter Windows 7. Das Problemscheint um zu versuchen, die Named-Pipe-Verbindung zwischen dem Windows-Dienst und der WPF-Anwendung herzustellen.

Wenn ich die WPF-App als Administrator ausführe, funktioniert sie einwandfrei. Es scheint also ein Problem mit dem Konto zu sein, in dem der Windows-Dienst ausgeführt wird, und das nicht mit einem regulären Benutzerkonto kommunizieren kann, das den WCF-Dienst über Named Pipes hostet. Gibt es eine Möglichkeit, diese Arbeit zu machen? Es scheint, dass ein WCF-Dienst, der in einem regulären Benutzerkonto ausgeführt wird, mithilfe von Named Pipes mit einer anderen App kommunizieren kann, die in demselben Konto ausgeführt wird. Mit einem anderen Konto kann er jedoch nicht dasselbe tun.

Seltsamerweise scheint das Gegenteil zu funktionieren. Der Windows-Dienst macht in der Tat auch einen Dienst mit einer Named-Pipe-Bindung verfügbar (er wird als Aktivierungsfunktion verwendet, da der Dienst ständig ausgeführt wird). Ich kann ohne Probleme eine Verbindung von der WPF-App zu diesem Dienst herstellen.

Meine Sicherheitskenntnisse sind etwas begrenzt. Kann jemand ein Licht auf das werfen, was los ist?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage