Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在低完整性流程下查询流程名称?_C++_Windows_Security_Internet Explorer - Fatal编程技术网

C++ 如何在低完整性流程下查询流程名称?

C++ 如何在低完整性流程下查询流程名称?,c++,windows,security,internet-explorer,C++,Windows,Security,Internet Explorer,我正在写一个BHO,我想执行一个外部流程。 如果操作系统为vista或更高版本,用户可能处于保护模式,使我的BHO在低完整性进程下运行 我尝试执行的外部进程列在IE的Elvation策略列表中,使其在正常完整性下运行 我想检查进程当前是否正在运行,如果没有,则只创建一次。 问题是我不能查询一个完整性比我高的进程 当我使用: HANDLE hProcess=OpenProcess(进程查询信息、进程虚拟机读取、假、dwPID); 我只能打开完整性较低的进程 是否有其他方法可以从低完整性流程查询流程

我正在写一个BHO,我想执行一个外部流程。 如果操作系统为vista或更高版本,用户可能处于保护模式,使我的BHO在低完整性进程下运行

我尝试执行的外部进程列在IE的Elvation策略列表中,使其在正常完整性下运行

我想检查进程当前是否正在运行,如果没有,则只创建一次。 问题是我不能查询一个完整性比我高的进程 当我使用: HANDLE hProcess=OpenProcess(进程查询信息、进程虚拟机读取、假、dwPID); 我只能打开完整性较低的进程

是否有其他方法可以从低完整性流程查询流程名称

谢谢

嗯, CreateToolhelp32Snapshot解决了这个问题,它映射了每个流程,不管它的完整性如何。 PROCESSENTRY32结构具有可执行文件,这就是我所需要的全部内容。

嗯, CreateToolhelp32Snapshot解决了这个问题,它映射了每个流程,不管它的完整性如何。
PROCESSENTRY32结构具有可执行文件,这就是我所需要的。

Hmm,当您可以调用ReadProcessMemory()时,您还可以做些什么……我不需要,但我需要它用于EnumProcessModule和GetModuleBaseName。有没有其他方法可以在不使用VM_READ属性的情况下获取进程名?顺便说一句,我可以使用互斥锁或其他东西来检查进程是否存在,但现在我只是好奇。我认为还有另一种方法供参考。Net的Process.getprocesss()似乎会给出列表,即使在低完整性下运行也是如此。我不确定它在幕后做了什么,但你可以研究一下。根据.net代码,在我看来,你可以使用内核32中的NtQuerySystemInformation()来检索它,在我的测试中,它似乎也在低完整性进程中工作。嗯,当你可以调用ReadProcessMemory()时,你还能做什么…我不会,但我需要它用于EnumProcessModule和GetModuleBaseName。有没有其他方法可以在不使用VM_READ属性的情况下获取进程名?顺便说一句,我可以使用互斥锁或其他东西来检查进程是否存在,但现在我只是好奇。我认为还有另一种方法供参考。Net的Process.getprocesss()似乎会给出列表,即使在低完整性下运行也是如此。我不确定它在幕后做了什么,但你可以研究一下。根据.net代码,在我看来,你可以使用内核32中的NtQuerySystemInformation()来检索它,在我的测试中,它似乎也在低完整性进程中工作。我知道这很旧,但对其他所有人来说都是一个警告,我想这可能是一个最近被关闭的环形孔。我注意到,当使用CreateToolhelp32Snapshot时,Windows 10上处于保护模式的IE 11只会以同样低的完整性显示进程。我知道这很旧,但正如对其他人的提醒一样,我认为这可能是最近关闭的一个循环漏洞。我注意到,当使用CreateToolhelp32Snapshot时,Windows 10上处于保护模式的IE 11只会以相同的低完整性显示进程。