c++ - 在启动DLL时启动时,C++ Explorer.exe 处于死锁状态

  显示原文与译文双语对照的内容

每次用户登录到 Windows ( 使用 HKCUSoftwareMicrosoftWindowsCurrentVersionRun 注册表路径) 时,我都使用注册表"跑步"键自动执行我的程序。
我的应用程序首先将一个DLL注入到 explorer.exe 进程中,使用 命令行 DLL

效果应该是:每次用户登录( 重新启动 Windows 后) 后,我的应用程序被执行,我的DLL被注入到 explorer.exe

在某些情况下,但在几个情况下,( 时间的问题,很少重现) 和 explorer.exe 进程都是死锁的,并且没有响应。
我不确定,但是我相信,因为注入器试图将一个DLL插入到流程( 在这样做时暂停) 中,而过程已经加载了。 这样,两个进程都被锁定为 ==> 死锁。

我知道死锁是在DLL真正被注入到进程之前实现的。

有谁知道如何避免它? 可能在注入 explorer.exe 之前查询它的状态? 也许等待浏览器稳定? 如果是这样,我怎么做?

谢谢

时间: 原作者:

你可以始终避免使用 DLL,并通过改变可以执行程序的. reloc 部分来避免挂起目标进程。

...