我已經創建了一個Windows服務來使用createProcessAsUser運行我的自定義應用程序。結果是一個應用程序以SYSTEM用戶身份在會話ID 0中運行,正如我所期望的那樣。我的問題是,我需要在該應用程序與當前用戶創建的其他應用程序之間進行一些通信。如何將用戶應用程序的自定義消息發送到SYSTEM應用程序?
如果一些桌面事件發生(SC_SCREENSAVE,關閉),當前用戶應用程序捕獲的事件,我需要告訴我的SYSTEM應用程序。我已經使用:
SendMessage(HWND_BROADCAST,CURRENT_USER_HAS_DONE_SOMETHING,0,0);
即使SYSTEM應用程序捕獲了很多系統事件(掛起,註銷...),並且運行在相同的會話ID中,我的自定義消息也不會被捕獲。看起來像Sendmessage不適用於SYSTEM用戶。
如何從用戶當前會話向SYSTEM應用程序發送消息?
就是這樣!控制服務正是我想要的。我已經使用OpenSCManager打開了服務,使用SC_MANAGER_CONNECT訪問權限,然後使用SERVICE_USER_DEFINED_CONTROL訪問OpenService,並簡單地調用ControlService來解決問題。即使用戶沒有特權,它也可以工作,這非常完美。非常感謝@CoreTech。 – tarsus04 2013-03-13 08:24:02
+1不知道 – 2013-03-13 08:31:08