我有一个程序,我想在Windows启动时启动。所以我将程序写入注册表值SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ RunOnce。 Windows启动时程序立即运行。
但是,它会在启动任何其他进程之前运行该程序。我希望在我的桌面启动并且所有其他系统进程都已启动后启动我的程序。我该怎么做?
编辑:所以我在程序中添加了延迟。在我的程序运行之后,无论桌面程序如何运行,都不会启动像桌面这样的进程。
答案 0 :(得分:5)
根据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和Startup Folder条目之前完成加载可以加载。
这是否意味着如果你在RunOnce键中放入一个Sleep(INFINITE)程序,它会阻止你的机器启动?有趣。
只需使用该文章中提到的其他键之一即可。或者,如果您需要RunOnce的语义,请使用在启动真实程序后退出的帮助程序。