我有一个桌面(非 Modern UI)程序,使用注册表项 currentversion\run 将其设置为在启动时运行。我希望它是用户看到的第一件事,但是只有当用户离开 Modern UI 并转到桌面或运行基于桌面的应用程序时,它才会弹出。
有没有办法让它在启动时真正运行?
编辑:额外的想法:我编写了该程序,如果它是一个现代 UI 应用程序,可以做到这一点吗?
答案1
您可以将程序设置为 Windows 8 中的默认 shell。
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon]
"Shell"="C:\Program Files (x86)\xx\xx\myprogram.exe"
或者对于当前用户:
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon]
"Shell"="C:\Program Files (x86)\xx\xx\myprogram.exe"
如果这不起作用,你需要cmd.exe /C
在命令前添加。
即cmd.exe /C "C:\Program Files (x86)\xx\xx\myprogram.exe"
这将完全绕过 Metro 界面,但您将失去 Explorer 中的所有标准 shell 内容。(不知道您是否想要这样)您将需要在执行程序后启动正常 shell。(explorer.exe 不会将桌面返回给您,因此我不知道(目前)如何恢复桌面和 Metro)
(使用 Windows 8.1 进行测试,所以我不知道这在 Windows 8 中是否可以实现)
编辑:您还可以使用“explorer.exe /select,explorer.exe”作为 shell 值。登录后,您会在一瞬间看到 metro,之后您将获得桌面(带有库的资源管理器屏幕)。也许您的自动启动应用程序将位于其上方。