簡體   English   中英

使用C語言監視Windows操作系統的進程

[英]Monitoring processes of the Windows OS using the C language

我想用C或C ++編寫一個必須監視某些特定進程的應用程序。 如何在C語言中實現它?

您說您必須監視“某些特定過程”。 如果您的應用程序啟動了流程,則可以從傳遞給CreateProcess函數的PROCESS_INFORMATION結構(字段hProcess)中提取流程句柄。 如果要跟蹤的進程已經以某種不同的方式啟動,則需要該進程的ID(PID),並將其用作OpenProcess的第三個參數來獲取句柄。 因此,您可以使用WaitForSingleObject或WaitForMultipleObjects函數來等待進程完成。 (可選)您可以使用GetExitCodeProcess函數獲取流程的退出代碼。 應用程序還有其他方法可以啟動新進程(例如,通過_system()庫函數),但是我強烈建議直接在代碼中使用CreateProcess,因為您可以完全控制子進程的行為(例如,可以選擇優先級,傳遞stdin / stdout / stderr句柄,確定啟動窗口的特征...)。

建議的示例: http : //msdn.microsoft.com/en-us/library/ms682512%28VS.85%29.aspx

您可以使用CreateProcess()函數在Windows中啟動一個進程。 它向PROCESS_INFORMATION.hProcess中的進程返回一個HANDLE。 當進程終止時,將發出該句柄的信號,讓您跟蹤其生命周期。 使用WaitForSingleObject()或WaitForMultipleObjects()可以做到這一點。 這里有一個代碼示例...

在編寫自己的文章之前,您是否查看過Process Monitor v2.8

Process Monitor是Windows的高級監視工具,可顯示實時文件系統,注冊表和進程/線程活動 它結合了兩個舊的Sysinternals實用程序Filemon和Regmon的功能,並添加了廣泛的增強功能列表,包括豐富的和非破壞性的過濾,全面的事件屬性(例如會話ID和用戶名),可靠的過程信息,具有集成符號支持的完整線程堆棧對於每個操作,同時記錄到文件等等。

暫無
暫無

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

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