Windows停止启动,而runonce中的EXE处于活动状态

时间:2013-06-07 09:03:56

标签: windows-7 registry runonce

我编写了一个执行某些任务的MFC应用程序(可执行文件),它是通过Windows 7注册表中的“Runonce”启动的。

我的问题是Windows,或者特别是Windows资源管理器在我退出该exe之前无法启动。如何让我的EXE异步运行,以便它可以执行任务,但Windows将继续启动?我在这里缺少一些基本的东西吗?

谢谢:)

1 个答案:

答案 0 :(得分:3)

如果您将应用程序放入

,这可能是个问题
  

HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \的RunOnce

正如http://support.microsoft.com/kb/179365/en-us

所述
  

HKEY_LOCAL_MACHINE \ ... \ RunOnce项中的条目以未定义的顺序同步加载。

     

因为HKEY_LOCAL_MACHINE \ ... \ RunOnce键是同步加载的,所以它的所有条目必须在HKEY_LOCAL_MACHINE \ ... \ Run,HKEY_CURRENT_USER \ ... \ Run,HKEY_CURRENT_USER \ ... \ RunOnce之前完成加载,和加载启动文件夹条目。

针对这种情况的合适解决方法可能会在HKLM中添加类似这样的注册表值\ ... \ RunOnce

cmd /c "start "myAppTitle" "path to myMegaApp.exe" "params""

它可以成功用于绕过UAC promt(确保以管理员身份编写注册表项,并在重新启动后以admin组用户身份登录)。

另一种方式

  • 将您的应用程序放到HKCU \ ... \ RunOnce(这些条目以异步方式加载)(如果您不需要应用程序的管理员权限)
  • 使用任务计划程序API,它提供了许多有趣的东西