Рассмотрим разделы реестра, которые используются для запуска программ и библиотек при входе пользователя в систему. Кроме того, здесь будут описаны и другие параметры, которые могут находиться в этих ветвях.
Программы, запускаемые процессом WINLOGON.EXE
Ветвь HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion\Winlogon используется диалогом входа пользователя в систему (программой WINLOGON.EXE) для хранения параметров реестра, влияющих на ее функционирование. Она может содержать следующие параметры.
• System – данный параметр строкового типа используется для запуска процессов с правами системы при входе пользователя в систему. При этом запускаемые с помощью этого параметра процессы указываются через запятую (то есть, используя этот параметр, можно запускать сразу несколько процессов). По умолчанию данный параметр ничему не равен, поэтому, если вы заметили в нем какое-нибудь значение, обратите на это внимание и постарайтесь выяснить, из-за чего так получилось.
Примечание
Словосочетание «запуск процесса» означает, что вы не сможете таким образом запустить окно или графическую программу. Точнее, если посмотреть в список Диспетчера задач, то можно будет увидеть запущенный процесс (он будет иметь права системы), однако графическую оболочку вы не увидите. По этой причине данный строковый параметр используется для запуска специализированных программ, а также вирусов, троянских коней, клавиатурных шпионов и т. д.
• Userinit – этот строковый параметр применяется для определения списка программ, используемых в качестве начальных процессов оболочки (запускаются процессом lsass.exe при входе в систему и настраивают пользовательские параметры, после чего запускают оболочку пользователя).
По умолчанию значение данного параметра равно %systemroot%\system32\userinit.exe.
• VmApplet – данный строковый параметр определяет набор процессов (пишутся через запятую), которые WINLOGON будет запускать для настройки параметров виртуальной памяти. По умолчанию этот параметр содержит лишь строку rundll32 shell32, Control_RunDLL "sysdm.cpl".
• Taskman – позволяет переопределить программу, используемую в качестве Диспетчера задач.
• Shell – это, наверное, самый главный параметр, применяемый программой WINLOGON. Именно этот параметр строкового типа указывает на программу оболочки (по умолчанию EXPLORER.EXE), которая будет загружаться для данного пользователя. В данном параметре также можно указать несколько запускаемых при входе пользователя программ, перечислив их через запятую.
Примечание
В отличие от предыдущих, этот строковый параметр может находиться не только в ветви корневого раздела HKEY_LOCAL_MACHINE, но и в ветви корневого раздела HKEY_CURRENT_USER. Вы можете использовать разные файлы оболочек для различных пользователей системы (в Интернете можно найти много файлов оболочек).
Значение описанного выше параметра shell может быть переопределено с помощью аналогичного параметра ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System (либо той же ветви корневого раздела HKEY_LOCAL_MACHINE).
Следует заметить, что параметр shell используется только в том случае, если значение параметра REG_DWORD типа UseAlternateShell, расположенного в ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\option, не равно 1. Если же значение данного параметра равно 1, то файл оболочки, загружаемый операционной системой, берется из параметра строкового типа AlternateShell, расположенного в ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot.
Другие настройки процесса WINLOGON
Теперь рассмотрим другие интересные параметры данной ветви реестра. К ним можно отнести следующие.
• Passwordexpirywarning – данный REG_DWORD-параметр определяет количество дней перед истечением срока действия пароля. Когда до истечения этого срока останется столько дней, сколько указано в этом параметре, начнет появляться окно с просьбой сменить пароль. По умолчанию значение данного параметра равно 0хЕ (то есть две недели).
• LegalNoticeCaption и LegalNoticeText – эти строковые параметры определяют, соответственно, заголовок и текст окна, которое будет выводиться перед отображением окна ввода логина и пароля пользователя. Если компьютером пользуется несколько человек, то в этом окне можно описать правила работы за ним или список логинов и паролей, с помощью которых можно зайти в систему забывчивым пользователям.
• Background – при использовании классического окна приветствия параметр дает возможность определить цвет фона этого окна. При этом параметру следует присвоить цифровые значения трех цветовых компонент, из которых будет состоять цвет (формат RGB, то есть первая цифра определяет насыщенность красной компоненты, вторая цифра – зеленой, а третья – синей). Например, чтобы указать черный фон, этому параметру нужно присвоить значение 0 0 0, чтобы использовать белый фон – значение 255 255 255, чтобы использовать красный, зеленый или синий, соответственно, значения 255 0 0, 0 255 0, 0 0 255. Остальные значения промежуточные. По умолчанию используется голубой фон.
Стандартный способ автоматического запуска программ
Ветвь HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows также может содержать параметры, значения которых будут загружаться при входе пользователя в систему. Рассмотрим их (все они имеют строковый тип).
• Load – определяет программы (пишутся через запятую), которые будут запускаться до входа пользователя в систему.
• Run – задает программы (также пишутся через запятую), которые будут загружаться после входа пользователя в систему.
• AppInit_DLLs – определяет все библиотеки, которые должны загружаться вместе с запуском любой программы. Данный параметр находится и в соответствующей ветви корневого раздела HKEY_LOCAL_MACHINE.
От значения параметра REG_DWORD-типа LoadAppInit_DLLs зависит, будет ли использоваться содержимое параметра AppInit_DLLs. Данный параметр также находится в ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows.
Ветвь HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run является стандартной и применяется для автозапуска программ при входе пользователя в систему. Чтобы запустить программу с помощью данной ветви, нужно создать в ней строковый параметр с любым названием. Значение этого параметра должно содержать путь к программе, которая будет запущена при входе пользователя в систему.
Реестр Windows позволяет не только указать программы, которые будут загружаться из этой ветви реестра, но и запретить загрузку этих программ. Для этого применяется REG_DWORD-параметр DisableCurrentUserRun, расположенный в корневых разделах HKEY_CURRENT_USER и HKEY_LOCAL_MACHINE (параметр из корневого раздела HKEY_LOCAL_MACHINE имеет больший приоритет) ветви реестра Software\Microsoft\Windows\CurrentVersion\policies\Explorer. Если значение данного параметра будет равно 1, то запуск программ из рассматриваемой ветви (находящейся в корневом разделе HKEY_CURRENT_USER) будет запрещен. Кроме того, будет запрещен запуск программ, заданных в параметре строкового типа Run ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows (как уже говорилось, предыдущий параметр запрещает запуск программ из ветви корневого раздела HKEY_CURRENT_USER). Если вам нужно запретить запуск программ из раздела HKEY_LOCAL_MACHINE, то следует присвоить REG_DWORD-параметру DisableLocalMachineRun, который расположен в ветви Software\Microsoft\Windows\CurrentVersion\policies\Explorer, значение 1. Параметр из корневого раздела HKEY_LOCAL_MACHINE будет иметь больший приоритет, чем параметр из корневого раздела HKEY_CURRENT_USER.
Если предыдущая ветвь реестра определяла программы, которые всегда будут запускаться при входе пользователя, то ветвь HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce описывает программы, которые будут запущены лишь однажды, а именно при следующем входе пользователя в систему. После этого программы будут автоматически удалены из данной ветви. В остальном она подобна предыдущей – чтобы определить запускаемую программу, нужно создать параметр строкового типа с любым именем и присвоить ему путь к запускаемой программе.
Аналогично предыдущей, запуск программ из этой ветви также можно запретить. Для этого используются REG_DWORD-параметры DisableCurrentUserRunOnce и DisableLocalMachineRunOnce. Первый из них запрещает рассматриваемую ветвь из корневого раздела HKEY_CURRENT_USER, а второй – из корневого раздела HKEY_LOCAL_MACHINE.
Ветвь HKEY_KEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnceEx отличается от предыдущей лишь более широкими возможностями. Например, в ней можно указать последовательность, в которой будут загружаться программы.
Использование групповых политик
Ветвь реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run определяет программы, которые будут автоматически запускаться при входе пользователя в систему. Она содержит параметры строкового типа, имена которых формируются в такой последовательности: 1, 2, 3, 4, 5 и т. д. Значения этих параметров соответствуют именам запускаемых программ и путям к ним. Особенность данной ветви заключается в том, что запускаемые с ее помощью приложения нельзя увидеть в окне программы msconfig.exe.
Ветвь HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\scripts\Startup предназначена для запуска программ и сценариев с правами системы при входе пользователя. В этой ветви могут содержаться подразделы, имеющие названия в формате 1, 2, 3, 4, 5 и т. д. В каждом из этих подразделов должны содержаться подразделы, имеющие такой же формат названия (1, 2, 3, 4 и т. д.). В данных подразделах, кроме других, могут находиться два строковых параметра – Script и Parameters. Первый параметр определяет путь к программе, которая будет запускаться, а второй задает список параметров для запуска этой программы. Эту ветвь реестра использует GPO[1].
Ветвь реестра HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\Scripts\Logon подобна предыдущей, но программы, запускаемые с ее помощью, имеют права пользователя.
Запуск native-программ
Ветвь реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager включает в себя параметр BootExecute, имеющий тип REG_MULTI_SZ. Данный параметр должен содержать названия лишь специальных программ, называемых native-программами. Они работают только с функциями Native API, большинство из которых описано в библиотеке ntldr.dll. Такие функции позволяют работать с файловой системой компьютера и жестким диском, однако не могут использовать графическую подсистему Windows. Что, в общем-то, не удивительно, ведь эти программы работают на этапе запуска компьютера, на котором операционная система еще не загружена.
Известные библиотеки
Ветвь HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs содержит список известных операционной системе библиотек (в виде параметров строкового типа, значение которых определяет название библиотеки). Известные операционной системе библиотеки всегда проецируются в оперативную память (не выгружаются в файл подкачки), и их запрещено замещать локальными библиотеками, имеющими те же названия, но расположенными в папке запускаемой программы.
В данной ветви реестра также находится параметр расширенного строкового типа DllDirectory. Он задает путь к каталогу, в котором хранятся библиотеки, определенные в ветви HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs.
Заметьте, что исключить определенные библиотеки из списка известных библиотек можно достаточно простым способом. Для этого нужно указать библиотекиисключения в значении параметра REG_MULTI_SZ-типа ExcludeFromKnownDlls, расположенного в ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager.
Службы
Ветвь HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services содержит все сведения о сервисах и службах, установленных на компьютере. Кроме того, она хранит сведения о том, будет ли служба автоматически загружаться при входе в систему (чтобы просмотреть информацию обо всех службах и способах их загрузки, введите в окне Запуск программы команду services.msc). Рассмотрим формат содержимого подразделов данной ветви.
• Description – данный параметр строкового типа определяет строку описания для соответствующей службы. Строка отображается в поле Описание окна, вызываемого двойным щелчком кнопки мыши на соответствующей службе в окне Службы.
• DisplayName – этот параметр строкового типа задает строку названия службы. Строка отображается в поле Имя службы окна свойств службы.
• ObjectName – данный параметр строкового типа определяет, от чьего имени будет выполняться запуск программы. Если значение этого параметра равно LocalSystem, то вход будет выполняться с правами системы. Если значение этого параметра равно NT Authority\NetworkService, то вход будет произведен от имени сетевой службы. Если же нужно предоставить службе вход от имени какого-нибудь пользователя данного компьютера, то этому параметру нужно присвоить строку .\логин пользователя.
• ErrorControl – этот REG_DWORD-параметр задает поведение системы при возникновении ошибок в работе службы. Если значение данного параметра равно 0, то ошибки будут игнорироваться. При значении параметра равном 1 пользователь будет предупреждаться об ошибке. Если значение параметра равно 2, то при появлении ошибки система будет перезагружаться.
• ImagePath – данный параметр строкового типа определяет путь к файлу службы. Именно этот файл будет запускаться при входе пользователя в систему. Чтобы данный файл запускался, он действительно должен быть службой, то есть должен корректно ответить на запросы системы. Например, если таким образом запускать какую-нибудь программу, например regmon.exe, то она сначала запустится (вы сможете увидеть ее окно, если в параметре Type, о котором будет рассказано ниже, будет присутствовать битовая маска 0х00000100), а через некоторое время появится сообщение, что служба не отвечает на запросы, и после этого regmon.exe прекратит свою работу.
Внимание!
Описанным способом можно легко запускать вирусы, даже если они не оформлены как службы, ведь некоторое время перед тем, как система завершит не отвечающую службу вируса, она будет работать. Этого хватит, чтобы заразить половину компьютера. К тому же такой вирус будет намного сложнее найти, ведь система сама выгружает его процесс.
• Start – этот REG_DWORD-параметр задает, в какой момент загрузки системы будет запускаться указанная служба. Например, если значение этого параметра равно 0, то служба будет запускаться при загрузке операционной системы. При значении 1 служба будет запускаться при инициализации операционной системы. Если значение данного параметра равно 2, то служба будет запускаться автоматически при входе в систему. При значении 3 служба должна запускаться вручную; значение 4 означает, что эта служба отключена.
• Type – данный REG_DWORD-параметр указывает, к какому типу программ относится эта служба. Он может принимать следующие значения:
– 1 – определяет устройства уровня ядра;
– 2 – задает драйвер файловой системы;
– 4 – является аргументом для адаптера;
– 8 – относится к службам файловой системы;
– 10 – является программой, запускающей свой процесс;
– 20 – является программой, запускающей общий процесс.
К значению этого параметра может также добавляться битовая маска 0х00000100. Если она присутствует, то система будет разрешать данной службе взаимодействие с Рабочим столом.
• Group – этот строковый параметр определяет группу, к которой будет относиться служба. Именно от группы зависит, как быстро будет запущена служба – сначала запускаются все службы одной группы, потом все службы другой и т. д. Например, в системе могут быть определены следующие группы: Primary disk, SCSI miniport, Event log, Video, Base, File system и др.
• DependOnGroup – данный параметр строкового типа определяет группы, которые должны быть запущены перед запуском данной службы.
• DependOnService – этот параметр строкового типа позволяет указать зависимость не от всей группы служб, а только от одной службы (или нескольких, перечисленных через точку с запятой). Указанные в параметре службы должны быть запущены перед тем, как будет запущена данная служба. Значение этого параметра отображается на вкладке Зависимости окна свойств службы.
На этом закончим рассмотрение настроек режимов операционной системы Windows Vista.