Реестр 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 содержит список известных операционной системе библиотек (в виде параметров строкового типа, значение которых определяет название библиотеки). Известные операционной системе библиотеки всегда проецируются в оперативную память (не выгружаются в файл подкачки), и их запрещено замещать локальными библиотеками, имеющими те же названия, но расположенными в папке запускаемой программы.