簡體   English   中英

如何捕獲Windows Server 2003中取消的注銷

[英]How to capture logoff cancelled in windows server 2003

我正在研究在Windows 2003上運行的基於終端服務的系統。它包含一個桌面替換應用程序,用戶可以從中啟動程序。 它還有一個注銷按鈕。 當用戶注銷時,必須發生兩件事。 首先,他退出了Windows。 然后調用存儲過程來清理用戶數據庫狀態。 這幾乎可以正常工作,但對於一種情況,那就是用戶取消注銷事件。 典型場景:1-用戶登錄,啟動MS Word,編輯文檔,不保存。 2 - 然后用戶按下注銷按鈕。 3- MS Word對此做出反應,要求用戶保存他的更改。 4 - 用戶按下取消。

此時,桌面應用程序可能已經調用了存儲過程來清理數據庫狀態。 如何在桌面應用程序中捕獲此行為? 是否有消息說結束會話操作被取消了?

我的問題是否有意義?

哦,所有的應用程序都是用Delphi 7編寫的,但我也在C,C ++和C#中工作,所以這些語言的答案也很受歡迎。

如果您的用戶狀態邏輯位於shell替換中,那么請考慮應用程序重新設計:從會話管理中解除自定義Shell。

例如:在服務中移動用戶狀態邏輯。 在此服務寄存器中,用於RDS通知:WTS_SESSION_LOGON / WTS_SESSION_LOGOFF。

我認為WTS_SESSION_LOGOFF 在實際注銷時發送,即如果用戶單擊Word中的“取消”按鈕,則Windows將知道用戶實際上沒有注銷,並且OS不會發送WTS_SESSION_LOGOFF(這是未經測試的,但聽起來合乎邏輯)。

這樣你就不會處理WM_ENDSESSION / WM_QUERYENDSESSION的東西了。

最近我寫了一些關於RDS通知主題的指南。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM