我有一個稍微複雜的設置,當然,在XP中可以正常工作,但在Windows 7上可以窒息。它可能看起來很瘋狂,但它在當時有意義!命名管道WCF安全問題
我有一個WPF應用程序啓動,然後啓動另一個應用程序與外部設備進行通信。啓動後,它使用WCF(由新進程託管)通過命名管道(net.pipe)與新進程建立通信。這似乎在任一操作系統上都能正常工作。我想讓WPF應用程序的某些功能在外部可用於命令行程序,所以我建立了另一個WCF服務,這次由WPF應用程序託管,並再次通過命名管道將其公開。再次,這似乎工作。
接下來,我想通過Web使WPF應用程序的功能可用。現在,WPF應用程序可以從普通用戶帳戶運行,這一點很重要,所以我認爲在Windows 7上完成這項工作的最佳方式是創建一個Windows服務,它將提供Web服務部分並將其傳回給WPF應用程序通過命令行工作正常的同一命名管道。我實現了這一點,它在XP上運行良好,但它在Windows 7上窒息。問題似乎與試圖建立Windows服務和WPF應用程序之間的命名管道連接。
如果我以管理員身份運行WPF應用程序,它工作正常。因此,運行Windows服務的帳戶似乎存在問題,無法與通過命名管道託管WCF服務的常規用戶帳戶進行通信。有沒有辦法做到這一點?看起來,在一個普通用戶帳戶中運行的WCF服務可以使用命名管道與另一個運行在同一個帳戶中的應用進行通信,但似乎它不能對另一個帳戶做同樣的事情。
奇怪的是,反過來似乎工作。事實上,Windows服務的確也暴露了一個帶有命名管道綁定的服務(因爲服務一直在運行,所以它被用作激活功能)。我可以從WPF應用程序連接到這個服務沒有任何問題。
我的安全知識有點有限。任何人都可以照亮發生的事情嗎?
感謝您的鏈接。我認爲你是對的,並確定了問題所在。現在的問題是,有沒有解決方案?閱讀它似乎是唯一的出路將是扭轉整個事情,並有Windows服務主機和WPF應用程序連接到它。但問題是,WPF應用程序是最終需要響應Web請求的應用程序。 – 2012-04-24 15:41:26