Задержка начала использования RunOnce - PullRequest
0 голосов
/ 08 августа 2011

У меня есть программа, которую я хочу запустить при запуске Windows. Поэтому я записал программу в значение реестра ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows \ CurrentVersion \ RunOnce. Программа запускается сразу после запуска Windows.

Однако программа запускается до запуска любого из других процессов. Я хотел бы, чтобы моя программа запускалась после запуска рабочего стола и запуска всех других системных процессов. Как бы я это сделал?

Редактировать: Итак, я добавил задержку в моей программе. Ни один из процессов, таких как рабочий стол, не запускается до тех пор, пока моя программа не запустится, независимо от того, какую задержку я поместил в свою программу.

1 Ответ

5 голосов
/ 19 августа 2011

По данным 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 может быть загружен.

Значит ли это, что если вы поместите программу, которая выполняет режим сна (INFINITE), в клавишу RunOnce, она будет препятствовать запуску вашего компьютера? Интересно.

Просто используйте один из других ключей, упомянутых в этой статье. Или, если вам нужна семантика RunOnce, используйте вспомогательную программу, которая завершается после запуска настоящей программы.

...