2011-01-09 66 views
0

我正在寫一個BHO,我想執行一個外部過程。 如果操作系統是Vista或更高版本,用戶可能處於保護模式,使得我的BHO在低完整性過程下運行。如何查詢低完整性進程下的進程名稱?

我試圖執行的外部進程列在IE的Elvation Policy列表中,使其在正常完整性下運行。

我想檢查進程當前是否正在運行,只有在沒有進程時才創建它。 問題是,當我使用時,我無法查詢比我的更高的完整性的進程 HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,dwPID); 我只能打開低完整性的進程。

是否有任何其他方式來從低完整性過程中查詢進程名稱?

謝謝!

+0

嗯,當你可以調用ReadProcessMemory()時,你還能做什麼... – 2011-01-09 21:10:06

+0

我不會,但我需要它爲EnumProcessModules和GetModuleBaseName。有沒有VM_READ屬性獲得進程名稱的另一種方法?順便說一句,我可以使用互斥體或東西來檢查過程是否存在,但現在我只是好奇。我認爲還有另外一種方式 – Omer 2011-01-09 21:34:19

回答

0

那麼, CreateToolhelp32Snapshot解決了它,它映射每個進程,不管它的完整性。 PROCESSENTRY32結構具有可執行文件,這就是我需要的。