1

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

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

谢谢 :)

4

1 回答 1

3

如果您将应用程序放入

HKEY_LOCAL_MACHINE\Software\Microsoft\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 提示(确保您将注册表项写入为 admin 并在重新启动后以 admin 组的用户身份登录)。

另一种方式

  • 将您的应用程序放到 HKCU\...\RunOnce (哪些条目异步加载)(如果您的应用程序不需要管理员权限)
  • 使用提供了很多有趣的东西的 Task Scheduler API
于 2013-08-28T05:08:16.030 回答