Запуск приложения до проводника Windows

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

Как я могу воспроизвести это поведение в своей собственной программе?

E.g.

  • Загрузка ОС
  • Авторизоваться
  • Программа запускается, обновляется и т.д.
  • Остальные программы запускаются (например, проводник Windows и все, что когда-либо запускается при запуске)

person jSherz    schedule 23.02.2011    source источник
comment
Что вы хотите, чтобы это приложение делало перед запуском проводника?   -  person David Heffernan    schedule 23.02.2011
comment
Приложение проверит наличие обновлений, установит несколько файлов, запросит у пользователя информацию, а затем продолжит запуск операционной системы.   -  person jSherz    schedule 23.02.2011
comment
Эти программы установки не делают это. Если вы расскажете нам, чего вы пытаетесь достичь, наверняка кто-нибудь подскажет вам лучший способ сделать это, чем пытаться вытеснить проводник Windows.   -  person Cody Gray    schedule 23.02.2011
comment
Чтобы создать программу, которая запускается до того, как что-либо еще запустится - так что пользователь вошел в систему, ничего (например, запускаемые программы / проводник еще не запущены). После этого программа запустится. Как только он завершится, все остальное, что обычно загружается, будет загружено, например. проводник Виндоус.   -  person jSherz    schedule 23.02.2011


Ответы (4)


Я не пробовал, но предполагаю, что это делается записью в реестре

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup

Ключей реестра еще больше — см. полный список здесь: Определение ключей RunOnce в Реестр

Но для вашего варианта использования я бы порекомендовал запустить ваше приложение как оболочку рабочего стола, аналогичную предложенному решению «vcsjones». Когда ваша программа завершится, вы можете вызвать explorer.exe, чтобы начать загрузку обычного рабочего стола.

person Robert    schedule 31.05.2012

Если вы хотите запустить приложение до запуска оболочки, вы можете добавить значение к значению Userinit в реестре. В этом ключе:

HKEY_LOCAL_MACHINE\ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ\Microsoft\Windows NT\CurrentVersion\Winlogon

Существует значение с именем Userinit. Измените его, чтобы ваша программа запускалась до userinit.exe. Например, чтобы запустить блокнот до инициализации оболочки/всего остального:

C:\WINDOWS\system32\notepad.exe,C:\Windows\system32\userinit.exe

Используйте запятые для разделения программ, которые должны быть запущены.

Это работает для Windows XP, Vista и 7.

person vcsjones    schedule 31.05.2012
comment
Обычно вы получаете сообщение «Отказано в доступе», и все антивирусы блокируют приложение. - person noober; 02.04.2015
comment
Согласно этому руководству, ключ запуска проводника устанавливается непосредственно перед запуском пользователя. Однако в этой древней статье говорится, что USERINIT отвечает за запуск оболочки проводника. В более новых системах это все еще случай. - person Laurie Stearn; 20.10.2015
comment
На самом деле попробовал этот метод, но он не работает на W7. Но кто-нибудь здесь знает, работало ли это до Vista? - person Laurie Stearn; 07.12.2015

Возможно, вы могли бы обернуть пакетный файл Windows .bat вокруг explorer.exe

@echo off
something.exe
explorer.exe

Но на самом деле это не гарантирует, что он всегда запускается до explorer.exe.

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

Если это то, что вы действительно ищете.

person the JinX    schedule 23.02.2011

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

Другое решение — написать службу Windows (установщик Windows с расширением .msi на самом деле является службой).

Я не уверен, что вы сможете заблокировать Windows Explorer...

person Simon Mourier    schedule 31.05.2012