我有一個Windows服務,應該爲需要知道哪個用戶當前登錄的所有用戶運行。我想編寫一個應用程序,在用戶登錄時啓動,將提醒服務該用戶是一個當前登錄。當用戶切換時(這意味着兩者仍在運行),它也需要處理。如何編寫一個應用程序來提醒Windows服務當前登錄的用戶?
這是否可能以及讓我的服務知道用戶當前登錄和使用計算機的最佳方式?如果是這樣,我該如何創建/安裝我的應用程序,以便在用戶登錄時啓動它(它只是進入該用戶的啓動文件夾?),並確定用戶是否被切換?
如果沒有,最好的方法是什麼?
我有一個Windows服務,應該爲需要知道哪個用戶當前登錄的所有用戶運行。我想編寫一個應用程序,在用戶登錄時啓動,將提醒服務該用戶是一個當前登錄。當用戶切換時(這意味着兩者仍在運行),它也需要處理。如何編寫一個應用程序來提醒Windows服務當前登錄的用戶?
這是否可能以及讓我的服務知道用戶當前登錄和使用計算機的最佳方式?如果是這樣,我該如何創建/安裝我的應用程序,以便在用戶登錄時啓動它(它只是進入該用戶的啓動文件夾?),並確定用戶是否被切換?
如果沒有,最好的方法是什麼?
我結束了使用SENS,我從Ed提供的鏈接中找到。埃德,如果你寫你的評論作爲答案,我會標記爲正確的。
問題是,多人可以很容易地登錄到同一臺機器,所以你需要實際做的是掛鉤到交互式用戶身份驗證事件。使用此API:
http://msdn.microsoft.com/en-us/library/aa374783(VS.85).aspx
如果你已經有了一個Windows服務,我將同樣查詢本地機器PsLoggedOn怎麼做。老實說,根據你想要做什麼 - 你可以查詢AD,並確定誰登錄整個域的位置,而不依賴於每臺機器在本地管理自己的狀態。
Here's an example script(列表中的第一個)。
Windows服務API直接支持這種情況。在您的HandlerEx函數中,SERVICE_CONTROL_SESSIONCHANGE通知在用戶登錄或註銷時發送。
這是一個關於Winlogon通知dll的文檔。它們很有用,但微軟從Vista開始就放棄了對它們的支持。他們在這裏討論它: http://technet.microsoft.com/en-us/library/cc721961%28WS.10%29.aspx – 2010-02-12 20:05:23