2

У меня есть приложение, которое обновляет программное обеспечение на локальной машине. Мне нужно обновить программное обеспечение до входа пользователя в систему, и я прочитал, что запуск приложения через раздел реестра RunServicesOnce , вероятно, является наиболее подходящим для этой цели.

Но я не могу найти этот ключ с помощью regedit и он не отображается в том же месте, что и ключ HKLM RunOnce в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce .

  1. Где находится этот ключ? То же самое в Windows XP \ Vista \ 7 \ 8 \ 8.1 \ 10?
  2. Как мне его использовать, есть ли дополнительные параметры?
  3. Как определить пользователя, от имени которого запускается приложение? Это запускается пользователем, который создал ключ? Если служба LocalSystem создает ключ, будет ли он работать как LocalSystem ?

1 ответ1

3

Где находится раздел реестра RunServicesOnce

У меня есть приложение, которое обновляет программное обеспечение на локальной машине. Мне нужно обновить программное обеспечение до входа пользователя

Запустить программу до входа пользователя в систему Windows 7

Если вы хотите, чтобы он запускался до того, как пользователь войдет в систему, вам придется запустить его как службу. Вот последовательность запуска основных разделов реестра, начинающаяся сразу после считывания bootmgr и заканчивающаяся записями ярлыков программы в двух папках Startup.

  1. HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute. Это может включать инструкции по планированию запуска chkdsk, но не пользовательских программ.
  2. Далее запускаются службы, затем следуют разделы реестра RunServicesOnce и RunServices (если есть)
  3. Затем пользователь входит в систему
  4. HKLM\ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon \ UserInit. Это указывает на программу C: \ WINDOWS \ system32 \ userinit.exe, и запись заканчивается запятой. Другие программы могут быть запущены с этого ключа, добавляя их и разделяя их запятой.
  5. HKLM\ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon \ Shell. Это должно содержать только одну запись, explorer.exe.
  6. Записи программы в этих 2 разделах реестра для ВСЕХ ПОЛЬЗОВАТЕЛЕЙ начинаются следующим образом: HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run и \ RunOnce
  7. Записи программы в этих 2 разделах реестра для ТЕКУЩЕГО ПОЛЬЗОВАТЕЛЯ начинаются следующим образом: HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Run и \ RunOnce
  8. Программы в папках запуска всех пользователей и текущего пользователя запускаются в последнюю очередь.

Важные программы, такие как антивирус и брандмауэр, запускаются на ранних этапах в качестве служб. Значки, которые появляются в области уведомлений (внизу справа на экране), представляют собой просто их пользовательские интерфейсы, то есть параметры и предпочтения.

Дополнительное расположение для 32-разрядного программного обеспечения на 64-разрядном компьютере - HKLM \ SOFTWARE \ Wow6432Node и HKCU.

Ключи запуска и порядок поиска

Доступ к реестру осуществляется еще до загрузки ядра NT, поэтому очень важно понимать, что компьютер настроен для загрузки при запуске. Следующий список ключей реестра доступен при запуске системы в порядке их использования различными компонентами Windows:

  1. HKLM\SYSTEM\CurrentControlSet\Control\ Диспетчер сеансов \ BootExecute
  2. HKLM\ System \CurrentControlSet\ Services (начальное значение 0 указывает на драйверы ядра, которые загружаются до запуска ядра)
  3. HKLM\ System \CurrentControlSet\ Services (начальное значение 2, автоматический запуск и 3, ручной запуск через SCM)
  4. HKLM\ Software \ Microsoft \ Windows \ CurrentVersion \ RunServicesOnce
  5. HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ RunServicesOnce
  6. HKLM\ Software \ Microsoft \ Windows \ CurrentVersion \ RunServices
  7. HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ RunServices
  8. HKLM\ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon \ Notify
  9. HKLM\ Software \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon \ Userinit
  10. HKCU \ Программное обеспечение \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon \ Shell
  11. HKLM\ Программное обеспечение \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon \ Shell
  12. HKLM\ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ ShellServiceObjectDelayLoad
  13. HKLM\ Software \ Microsoft \ Windows \ CurrentVersion \ RunOnce
  14. HKLM\ Software \ Microsoft \ Windows \ CurrentVersion \ RunOnceEx
  15. HKLM\ Software \ Microsoft \ Windows \ CurrentVersion \ Run
  16. HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Run
  17. HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ RunOnce
  18. HKLM\ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer \ Run
  19. HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer \ Run
  20. HKCU \ Программное обеспечение \ Microsoft \ Windows NT \ CurrentVersion \ Windows \ load
  21. HKLM\ Программное обеспечение \ Microsoft \ Windows NT \ CurrentVersion \ Windows
  22. HKLM\ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows \ CurrentVersion \ Explorer \ SharedTaskScheduler (только XP, NT, W2k)
  23. HKLM\ Программное обеспечение \ Microsoft \ Windows NT \ CurrentVersion \ Windows \ AppInit_DLLs

Примечание. Некоторые из этих ключей также отображаются в разделе HKLM \ Software \ wow6432node в системах, работающих на 64-битной архитектуре и с 64-битной версией Windows. Я не буду освещать каждый из них в этом посте.

Запускайте свою службу как учетную запись LocalSystem, если только учетной записи не требуется доступ к сетевым ресурсам, после чего вы создадите учетную запись службы домена, предоставите ей доступ к соответствующим ресурсам, а затем жестко закодируете свои учетные данные для запуска службы. На локальном компьютере у него будут административные разрешения на все и не требуется пароль для учетных данных службы.

Учетная запись LocalSystem

Учетная запись LocalSystem является предопределенной локальной учетной записью, используемой диспетчером управления службами. Эта учетная запись не распознается подсистемой безопасности, поэтому вы не можете указать ее имя при вызове функции LookupAccountName. Он имеет широкие привилегии на локальном компьютере и действует как компьютер в сети. Его токен включает идентификаторы NT AUTHORITY\SYSTEM и BUILTIN\Administrators ; эти учетные записи имеют доступ к большинству системных объектов. Имя аккаунта во всех локалях есть .\LocalSystem. Имя, LocalSystem или ComputerName\LocalSystem также могут быть использованы. Эта учетная запись не имеет пароля. Если вы укажете учетную запись LocalSystem при вызове функции CreateService или ChangeServiceConfig , любая предоставленная вами информация о пароле игнорируется.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .