2010-08-10 17 views
1

我有一個作爲計劃任務運行的程序。該程序在XP上以SYSTEM身份運行。 想法是,程序將在後臺運行,而USER處於活動狀態。作爲SYSTEM運行並註銷用戶「USER」引腳

我需要程序在特定條件發生時註銷USER。

我試着使用:

[DllImport("user32.dll")] 
public static extern int ExitWindowsEx(int uFlags, int dwReason); 

但似乎不記錄用戶關閉。

我想也許這是記錄系統關閉,因爲它是作爲系統運行。

我該如何logogg USER?

謝謝, SummerBulb。

回答

0

如果您顯示ExitWindowsEx的標誌,但您可能需要模擬用戶,但我認爲這不太可能會有所幫助。如果我記得註銷當前用戶就夠了,但是您可能不得不強制註銷,否則,如果用戶未保存一些更改,它可能會被取消。

可是冒充你可以看看這個用戶: http://www.codeproject.com/KB/system/UserImpersonation.aspx

我會看着這裏開始,幷包括註銷和forceifhung值: http://msdn.microsoft.com/en-us/library/aa376868(VS.85).aspx

這將是類似於EWX_FORCEIFHUNG | EWX_LOGOFF作爲參數。

UPDATE:

我希望邁克是正確的,模擬不會在這裏幫助。

+0

我不認爲這種模擬會做到這一點,因爲你會得到用戶窗口站/桌面/會話的另一個實例。 – Mike 2010-08-10 16:02:56

0

我認爲你需要以該用戶的身份運行一些代碼。創建一個在用戶登錄時運行並監視事件的應用程序。讓你的服務設置事件,然後代碼將調用ExitWindowsEx方法。正如詹姆斯所說,你仍然需要使用forceifhung和logoff params。

+0

我有一個我寫的屏幕保護程序,可以通過窗口服務啓動,因爲系統將用戶關閉,但這些類型的問題非常非常難以調試。 – 2010-08-10 16:12:12