要想守護某個進程,就先得知道這個進程在不在。我們假設要守護的進程只會存在一個實例(這也是絕大部分情形)。
我是遍歷系統上的所有進程,然後判斷他們的路徑和要守護的進程是否一致,以此來確定進程是否存在。
遍歷進程大家都知道用CreateToolhelp32Snapshot系列API,但是他們最後取得的是進程exe名稱,不是全路徑,如果僅依靠名稱就可以達到目的也就罷了,但是有的時候還是得取到全路徑,這樣會更靠譜一些。
那麼問題來了,如何取到進程全路徑?
首先登場的是GetModuleFileNameEx。大多數時候,我們都可以用這個函數來取得進程的全路徑,而且這個函數是全平台都有,但是你有沒有注意到這樣一段話:
2015年11月19日星期四