Обнаружение события запуска системы

Я хотел бы выполнить процедуру, которая должна запускаться только при запуске системы Windows, и запуск здесь не означает запуск программы. Есть ли что-нибудь, что я могу сделать, чтобы запустить мою процедуру. Если возможно, я хотел бы избежать возни с реестром. Я использую делфи 2010.


person megatr0n    schedule 06.06.2011    source источник


Ответы (1)


Есть много вариантов, но все они будут включать настройки, требующие прав администратора. Эти параметры включают в себя:

  1. Поместите свою рутину в службу, которая настроена на автоматический запуск. Это запустится при запуске системы и до того, как какой-либо пользователь войдет в систему.
  2. Добавьте запись в HKLM\Software\Microsoft\Windows\CurrentVersion\Run. Это будет выполнено, когда интерактивный пользователь войдет в систему.
  3. Добавьте запланированную задачу с соответствующим триггером, например. At startup.
person David Heffernan    schedule 06.06.2011
comment
@пользователь, я знаю. Вот почему я сказал, что он запускается, когда интерактивный пользователь входит в систему. Это действительно может быть хорошо для OP. Особенно, если функция приложения, которую хочет запустить OP, требует контекста, предоставленного вошедшим в систему пользователем. - person David Heffernan; 06.06.2011
comment
У вас есть пример кода, который я мог бы где-нибудь посмотреть? Я знаю, что установка исполняемого файла для загрузки при запуске, но кажется, что указанные вами параметры просто загрузят исполняемый файл, и он не будет знать, был ли он вызван двойным щелчком пользователя по ярлыку или запуску системы. Существует разница между запуском программы и запуском системы (Windows), и меня интересует только последний. - person megatr0n; 06.06.2011
comment
Если вам нужно другое поведение при вызове при запуске системы, вы можете просто настроить запланированную задачу, скажем, передать аргумент командной строки, чтобы указать, что она вызывается при запуске. - person David Heffernan; 06.06.2011