【问题标题】:Delayed start using RunOnce使用 RunOnce 延迟启动
【发布时间】:2011-08-08 14:16:16
【问题描述】:

我有一个程序要在 Windows 启动时启动。于是我把程序写到了注册表值SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce。该程序在 Windows 启动时立即运行。

但是,它会在任何其他进程启动之前运行程序。我想让我的程序在我的桌面启动并且所有其他系统进程都启动后启动。我该怎么做?

编辑:所以我在我的程序中添加了延迟。无论我在程序中设置什么样的延迟,桌面等进程都不会启动,直到我的程序运行之后。

【问题讨论】:

  • 面对这样的问题,你必须像 Raymond Chen 一样思考——想象一下如果两个程序可以做到这一点。如果有这个延迟启动设置,那么其他程序会使用它,你仍然会遇到同样的问题。我想这取决于你想在你之前开始什么进程,但也许最简单的解决方案是轮询你正在等待的任何内容,或者只是睡一两分钟。
  • 我想我不是很清楚,看看编辑。

标签: windows windows-services registry runonce


【解决方案1】:

根据Microsoft

除了 HKEY_LOCAL_MACHINE...\RunOnce 键之外,所有键及其条目都是异步加载的。因此,RunServices 和 RunServicesOnce 键中的所有条目都可能同时运行。

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

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

这是否意味着如果你在 RunOnce 键中放置一个执行 Sleep(INFINITE) 的程序,它会阻止你的机器启动?很有趣。

只需使用该文章中提到的其他键之一。或者,如果您需要 RunOnce 的语义,请使用启动真实程序后退出的辅助程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多