【发布时间】:2023-03-23 22:13:01
【问题描述】:
我需要确保explorer.exe 作为系统外壳运行。我需要做的是:
- 用
explorer.exe覆盖当前shell (Winlogon\Shell) - 运行
explorer.exe(作为shell) - 用我自己的 shell 覆盖当前 shell。
最后两步之间是一场比赛:
- 如果我用自己的 shell 覆盖当前 shell 太快,只会打开“我的文档”窗口。
所以问题是,我可以调用任何事件/互斥体/回调来确保资源管理器被初始化为 shell?
我能做的最好的事情就是等待托盘窗口,例如:
while(!FindWindow("Shell_TrayWnd", NULL)) {
sleep(250);
}
这似乎有点草率,有没有更好的方法?
【问题讨论】:
-
我就是这么做的。它位于 Winlogon\Shell 注册表项中。
-
为什么以shell运行explorer.exe,以后再替换?
-
并非如此,我们的软件满足我们的需求。
标签: c winapi windows-shell windows-explorer