【发布时间】:2011-06-06 05:06:07
【问题描述】:
我正在编写 BHO,我想执行一个外部进程。 如果操作系统是 vista 或更高版本,则用户可能处于保护模式,使我的 BHO 在低完整性进程下运行。
我尝试执行的外部进程列在 IE 的提升策略列表中,使其在正常完整性下运行。
我想检查进程当前是否正在运行,如果不是,则只创建一次。 问题是我无法查询比我的完整性更高的进程 当我使用: 处理 hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, dwPID); 我只能打开完整性低的进程。
还有其他方法可以从低完整性进程中查询进程名称吗?
谢谢!
【问题讨论】:
-
嗯,当你可以调用 ReadProcessMemory() 时你还能做什么......
-
我不会,但我需要它用于 EnumProcessModules 和 GetModuleBaseName。是否有另一种方法来获取没有 VM_READ 属性的进程名称?顺便说一句,我可以使用互斥锁或其他东西来检查进程是否存在,但现在我只是好奇。我认为还有另一种方法
-
仅供参考似乎即使在低完整性下运行时,.Net 的 Process.GetProcesses() 也会给出列表。我不确定它在幕后做了什么,但你可以调查一下。
-
在我看来,基于 .net 代码,您可以使用 Kernel32 中的 NtQuerySystemInformation() 来检索它,在我的测试中,它似乎也可以在低完整性进程中工作。
标签: c++ windows security internet-explorer