2011-10-24 267 views
1

可能重複:
C# Process MonitorC#程序啓動和停止服務

我想寫檢測到啓動了Windows服務和進程關閉在我的服務器之一。如果我自己啓動應用程序,而不是其他進程,則可以使用Process對象來獲得這些信息,這很容易。這聽起來像是一種寫作的服務,但沒有取得任何進展。

+0

您的意思是? http://stackoverflow.com/questions/7277620/getting-a-list-of-processes-in-asp-net –

+0

這是非常昂貴和不準確的。使用http://stackoverflow.com/questions/1986249/c-sharp-process-monitor/1986856#1986856 –

回答

0

最好的選擇是使用WMI。對該遠程服務器進行RPC調用,正確進行身份驗證,然後使用WMI執行查詢以檢索正在運行的進程。

+0

獲取進程運行,不是問題,但檢測它們什麼時候關閉,這是我卡住的地方,存在無法檢測到進程停止。 – MikeZappa

0

您可以使用OpenProcess函數爲當前正在運行的每個進程打開一個進程句柄。所有你需要的是進程ID。然後,您可以使用您喜歡的任何等待功能的流程句柄;當相應的過程退出時它們變成信號。

檢測何時啓動新流程更困難。如果對新進程的輪詢不能令人滿意,則需要編寫設備驅動程序並使用PsSetCreateProcessNotifyRoutine函數。