WindowsAPI将替换寄存器中的explorer.exe桌面程序运行

所以在过去的一个半星期里,我一直在编写代码来连接 wh_shell 的程序,该程序将替换注册表中的 explorer.exe 并作为主桌面程序运行。 Windows API 之外的可用信息和资源似乎很少,这有点难以描述,也没有详细解释所有内容。出于某种原因,无论是在 explorer.exe 中运行它还是替换寄存器并使其成为默认 shell,我都无法让它工作。我将在这篇文章中提出一些问题,因为我认为如果你能回答其中一个问题,你可能会得到更多答案。

首先我有一个关于钩子的问题:当我在 -resource 下运行 SetWindowsHookEx(…) 函数时,如果钩子仅用于监视当前进程,它会显示 var lpfn。现在很明显,当监视像 window_created 这样的事件时,这些事件是不同进程中的事件,这让我认为 hookproc 必须在 DLL 中(这就是我到目前为止的编程方式)。但这对我来说是个问题,因为当您运行 SetWindowsHookEx(…) 时,我希望受监控的进程在用户决定启动它们之前不存在。当 wh_shell 事件完成时,这些进程是否会通知系统,以便我的钩子在创建时不需要放入每个进程中,还是更像是当我使用 wh_shell 运行 SetWindowsHookEx(…) 时它放置了一个钩子在创建时的所有进程中。第二个资源指出,当这些事情发生时,系统只是调用 hookproc,然后我什至需要一个 DLL,或者它需要挂钩的进程,因为我认为它不需要挂钩。

其次,我有一个关于将我的进程设置为默认 shell 的问题 – 请参阅资源 – 资源描述任何将自己注册为默认 shell 的进程(我假设只是将注册表修改为我的进程,如果不是,请更多让我知道)需要调用 SystemsParameterInfo(…) 函数。所以首先,我是否需要在运行 SetWindowsHookEx(…) 之前调用这个函数,或者在我的代码中是否有一些预期的地方应该在其他地方?然后关于它没有指定的其他变量,只是好奇地建议为 explorer.exe 设置它们,也许还有一些其他示例(包括不做的事情)。

最后,出于测试目的,在这里使用控制台对我帮助最大。控制台现在将用于输入以运行函数和命令(例如打开寄存器并将 shell 换回 explorer.exe)。如果我的 hookproc 在一个 DLL 中并且我需要它来输出一些消息,我不想弄乱同一个控制台,我什至不知道它是否会输出到同一个控制台,那么可能是什么建议或一个潜在的输出修复场景(这也是临时的,用于测试,所以它不一定是完美的,甚至不是很好)?

图片[1]-WindowsAPI将替换寄存器中的explorer.exe桌面程序运行-唐朝资源网

另外我不认为windows 11应该是个问题,但是我还没有在windows 10系统上测试过…

图片[2]-WindowsAPI将替换寄存器中的explorer.exe桌面程序运行-唐朝资源网

我没有包含任何代码,因为我很确定没有它大部分都可以回答,而且它的代码行数太少,不像典型的问题,就像检查我的代码并帮助我,也许是一些示例你能告诉我的代码真的很有帮助。

谢谢!

SetWindowsHookEx(…)

默认外壳

测试环境:

© 版权声明
THE END
喜欢就支持一下吧
点赞114赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容