2011-01-09 69 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结构具有可执行文件,这就是我需要的。