我打算在超级用户中问这个,但它与 C/C++ 和 Win32 编程有关,所以我会在这里问。我希望在用户登录和 Windows 7+ 的 Windows shell 之间添加一个步骤。这些是我研究和尝试但成功有限的事情:
MSGINA
存根,它似乎可以完美运行,但在 Windows Vista 中已停产,因此我无法使用它。- 我看过自定义
Windows Credential Providers
,但我不完全确定这会做我想要的(在登录后和 windows shell 之前启动一个应用程序)。 - 一个(半)自定义外壳,它可以满足我的需要,然后启动普通的 Windows 外壳(explorer.exe)。
选项 3 让我最接近,但我的问题是,如果我创建了HKLM\...\Winlogon:Shell
指向我的程序的注册表值,我无法将 explorer.exe 作为 shell 启动。我可以在退出并启动资源管理器之前创建Shell
值,HKCU
然后将其更改为,explorer.exe
然后将值恢复到我的程序中。这会起作用,但不如使用HKLM
. 在这种情况下,我什至无法使用HKLM
,因为我的程序正在当前用户的上下文中执行,并且用户没有对该密钥的写入权限。
是否有任何创造性的方法可以做到这一点或我错过的任何其他可能性?上面的选项 2 似乎不可行,但如果我错了,请纠正我。