我有一個windows服務,可以通過調用「CreateProcessAsUser」函數在用戶windows會話中創建一個可執行文件。只要有一個Windows會話已經存在,這工作正常。如果沒有一個,我希望能夠以編程方式創建一個。這是可能的嗎?似乎無法找到一個功能來做到這一點。通過Win32 API從服務創建Windows會話
回答
LogonUser函數怎麼樣?
不能創建從服務一個新的會話。會話由操作系統管理。用戶在交互式登錄時創建新的。
在調用'CreateProcessAsUser()'之前,可以使用WTS API,如'WTSGetActiveSessionId()'和'WTSEnumerateSessions()'來確定用戶會話是否存在。 –
備案:Windows Server 2012支持遠程桌面協議提供程序API,您可以使用該API以編程方式創建會話。此外,至少在理論上,您可以編寫自己的遠程桌面客戶端(或修改其中一個開放源代碼客戶端),以在任何支持的Windows版本上創建新會話 - 當然,前提是啓用了遠程桌面。 –
@RemyLebeau這就是我已經做的,我試圖避免會話意外關閉的問題。 – Robert
這不是我所問的問題的解決方案,但是如果你明白我的意思,那就是通過提出這個問題來幫助實現我試圖達到的目標的解決方案。
與其創建服務器會話的Windows服務不同,您可以配置Windows以在啓動時自動登錄。這仍然意味着有人可以進行註銷,但可以消除會話消失的主要原因:服務器正在重新啓動。使用以下步驟激活自動登錄:
- 按下鍵盤上的Windows鍵+ R啓動「運行」對話框。
- 鍵入regedit並回車,打開註冊表編輯器
- 然後瀏覽到HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\ WindowsNT的\ CURRENTVERSION \ Winlogon中\
- 設置AutoAdminLogon = 1(創建它,如果不存在,它是一個字符串變量)
- 設置DefaultUserName =您的用戶名(創建它,如果它不存在,它是一個字符串變量)
- 設置DefaultPassword =您的密碼(創建它,如果它不存在,它是一個字符串變量)
說明w ^從這個職位採取: http://channel9.msdn.com/Blogs/coolstuff/Tip-Auto-Login-Your-Windows-7-User-Account
- 1. 從服務創建會話互斥?
- 2. 如何通過另一個Windows服務創建Windows服務
- 3. 爲什麼我會通過Web API服務選擇Windows服務?
- 4. 通過Python上的REST API創建Windows Azure服務
- 5. Quickblox通過意向服務創建會話
- 6. 在VC++中通過Win32 API創建窗口(菜單創建)
- 7. ASMX Web服務通過會話
- 8. 通過facebook會話服務(SDK 3.0.1)
- 9. 通過服務器的Rails會話
- 10. 從服務創建通知
- 11. 創建Windows服務
- 12. 從windows-2008-server中的服務在非零會話中創建進程?
- 13. 如何從Windows服務獲取數據(由WCF創建 - 與Windows服務通信)?
- 14. 創建一個Windows(win32)中的服務在網絡上發現
- 15. 創建一個python win32服務
- 16. 通過終端服務器創建SSH會話連接到設備
- 17. Bitbucket服務API創建POST服務
- 18. 通過API創建Facebook業務頁面
- 19. 通過Web代理與WCF服務通信;從Windows服務
- 20. 如何使用代理服務器創建會話
- 21. 提供API的電話會議服務?
- 22. 如何通過Ektron CMS400.NET Web服務API創建新的會員用戶?
- 23. 從jar文件創建windows服務
- 24. 通過Web服務從Silverlight更新會話變量
- 25. 如何通過指定用戶會話從服務運行ocx
- 26. 創建只能通過Windows服務打開的文件
- 27. 不可能通過DLL創建Windows服務?
- 28. 創建Windows服務時
- 29. 在服務之外訪問會話會創建重複
- 30. 服務電話通過jquery
不幸的是,「會話」是Windows中的一個超載的術語。在這種情況下,我認爲OP在談論遠程桌面(又名Windows終端服務)會話而不是登錄會話。羅伯特,你能澄清一下嗎? –
我不確定我是否理解這裏的差異,它本身不需要是遠程桌面會話,但它需要具有sessionid> 0,以便它可以使用gui執行程序。 – Robert
遠程桌面服務是Windows的一部分,它允許用戶切換和會話零隔離以及實際的遠程桌面連接。你肯定在這裏談論遠程桌面會話ID,所以LogonUser不會解決你的問題。 –