2012-04-01 69 views
3

我有一個系統服務運行在我的Windows機器上,可以模擬當前登錄的用戶並以他們的名義啓動應用程序(包括UI應用程序)。如何在Windows登錄完成後運行某些操作?

當用戶已經登錄到他們的交互式會話,他們的桌面被創建等等時,它工作正常。

該服務的啓動是自動的,所以每次重新啓動後都會自動啓動。如果在服務啓動後立即嘗試運行某個程序(需要UI訪問),那麼該程序可能會失敗 - 可能是因爲自動登錄進程仍在進行中,桌面尚未創建,等等。

問題是:如果服務開始「提前」,它如何等待交互式會話被完全初始化(除了等待一些任意時間,這不是最優的)?

或者,服務能否「遲到」啓動?是否有註冊表項或文件夾或其他內容可用於將服務啓動延遲至Shell準備就緒並且可以安全啓動UI應用程序?

回答

2

最簡單的兩種方式「執行一些代碼,當用戶登錄」是寫一個bat文件,並且:

1)將.bat文件在啓動文件夾 < =注意:的Windows 7/Vista中是否有「啓動文件夾」

新的位置......或者......

2)創建一個新的任務,在登錄調用.bat文件

我選擇「2 )「給你更好的控制。如果需要,它還允許.bat文件「以管理員身份運行」。

如果你想使.bat文件短暫停頓(例如,以確保一切都完全初始化」,您可以添加‘平-w’你的.bat文件

例:

@rem Waits 5 seconds before continuing 
ping 1.1.1.1 -n 1 -w 5000 > nul 
+0

謝謝。我發現解決方案2工作得很好(我打電話給schtasks.exe以編程方式創建/刪除ONLOGON任務),這個ping技巧很簡潔(另一種選擇是使用timeout/t)。 – Netspirit 2012-04-03 08:02:32

相關問題