ControlService API允許向Win32服務發送控制代碼。但是,如果我需要發送(並接收)不止一個控制代碼呢?在用戶模式GUI Win32應用程序和Win32服務之間建立通信以交換任意數據的最佳方式是什麼? (假設我可以編譯服務和應用程序)。該方法應該可以從Windows 2000工作到Windows 7,並且它應該適用於管理員和標準用戶。謝謝!使用Win32服務進行進程間通信
回答
你幾乎可以使用任何IPC機制。如果您的服務和應用程序基於.net,那麼最常見的解決方案是使用WCF。對於本地代碼服務和應用程序,一個非常常見的解決方案是命名管道。但是最好的選擇取決於您的具體使用需求。
服務會話隔離怎麼樣?命名管道是否允許跨會話進行通信? –
@Andrei是的,這沒問題。命名管道需要被正確保護,但是跨會話沒有限制。 –
好的,謝謝,我會嘗試一個命名管道,看看它是怎麼回事。如果它運作良好,我會接受你的回答:-) –
聽起來好像您打算讓服務響應遠程請求。爲此,您可以使用命名管道,如前所述。然而,命名管道比TCP套接字稍微複雜一些。
如果您採用TCP套接字編程(socket()
,bind()
,listen()
等),您將能夠將該知識移植到其他平臺。
一個誠實的問題。爲什麼命名管道比套接字更復雜?我想了解更多。 –
訪問由匿名用戶命名的管道在Windows 7時間框架中變爲只讀:http://blogs.technet.com/b/nettracer/archive/2010/07/23/why-does-anonymous-pipe-access -fail-on-windows-vista-2008-windows-7-or-windows-2008-r2.aspx –
但是'''socket()'''是永遠的。 –
- 1. 通過服務線程進行通信
- 2. 如何在C#中進行進程間通信時進行進程間通信?
- 3. 使用進程間通信
- 4. Windows服務和網絡服務之間的進程間通信
- 5. 使用Amazon SWF在服務器之間進行通信
- 6. 在Windows服務和Exchange服務器之間進行通信
- 7. 進程間通信
- 8. 進程間通信
- 9. 進程間通信
- 10. 如何使用FIFO在python子進程之間進行通信
- 11. 使用Messengers和Binders進行進程間通信
- 12. Win32 ::串行二進制通信
- 13. C#.net windows服務與遠程web服務進行通信
- 14. 使用vbscript的進程間通信
- 15. 使用GA庫的進程間通信
- 16. 使用管道的進程間通信
- 17. 用於進程間通信的wcf服務
- 18. 服務和活動之間的通信使用不同的進程使用PendingIntent
- 19. 控制檯應用程序與Windows服務進行通信
- 20. Android私人應用程序與GPL Android服務進行通信
- 21. C - execvp()進程間通信
- 22. 進程間通信推薦
- 23. 進程間通信Python
- 24. 探聽進程間通信
- 25. Java進程間通信
- 26. 進程間通信SYSTEM_INFO structture
- 27. 進程間通信/廣播
- 28. Python進程間通信
- 29. ruby進程間通信
- 30. 進程間通信Unix C
最好的辦法是最好的解決你的問題。您可以使用DCOM或SOAP Web服務,套接字或命名管道,或... – bmargulies
編輯:我應該google更好:發佈問題後,我發現下面的文章,解釋它一切都很好: http://www.codeproject.com/KB/vista-security/interaction-in-vista.aspx –