使用 RunOnce 延迟启动

发布于 2024-11-28 05:38:06 字数 243 浏览 1 评论 0原文

我有一个程序想在 Windows 启动时启动。所以我将程序写入注册表值SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce。 Windows 启动时该程序立即运行。

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

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

I have a program that I want to start at Windows start up. So I wrote the program to the registry value SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce. The program runs immediately when Windows starts up.

However, it runs the program before any of the other processes are started. I would like to have my program start up after my Desktop has started and all the other system processes have started. How would I do this?

Edit: So I have added a delay in my program. None of the processes like desktop start until after my program has run no matter what kind of delay I put in my program.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

秋风の叶未落 2024-12-05 05:38:06

根据微软

除了 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 和启动文件夹条目之前完成加载可以加载。

那么这是否意味着如果您将一个执行 Sleep(INFINITE) 的程序放在 RunOnce 键中,它将阻止您的计算机启动?有趣的。

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

According to Microsoft:

With the exception of the HKEY_LOCAL_MACHINE...\RunOnce key, all keys and their entries are loaded asynchronously. Therefore, all entries in the RunServices and RunServicesOnce keys can potentially run at the same time.

Entries in the HKEY_LOCAL_MACHINE...\RunOnce key are loaded synchronously in an undefined order.

Because the HKEY_LOCAL_MACHINE...\RunOnce key is loaded synchronously, all of its entries must finish loading before the HKEY_LOCAL_MACHINE...\Run, HKEY_CURRENT_USER...\Run, HKEY_CURRENT_USER...\RunOnce, and Startup Folder entries can be loaded.

So does that mean if you put a program that does Sleep(INFINITE) in the RunOnce key, it will prevent your machine from starting up? Interesting.

Just use one of the other keys mentioned in that article. Or if you need the semantics of RunOnce, use a helper program that exits after launching the real program.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文