Роман Клименко - Недокументированные и малоизвестные возможности Windows XP
■ rundll32.exe CRYPTEXT.dll, CryptExtAddSPC «файл сертификата PCKS #7» — присоединить данный файл сертификата PCKS #7.
■ rundll32.exe CRYPTEXT.dll, CryptExtOpenCAT «файл каталога безопасности» — открыть данный файл каталога безопасности.
■ rundll32.exe CRYPTEXT.dll, CryptExtOpenCER «файл сертификата безопасности» — открыть указанный файл сертификата безопасности.
■ rundll32.exe CRYPTEXT.dll, CryptExtOpenCRL «файл списка отзывов сертификатов» — открыть данный файл списка отзывов сертификатов.
■ rundll32.exe CRYPTEXT.dll, CryptExtOpenCTL «файл списка доверия сертификатов» — открыть указанный файл списка доверия сертификатов.
■ rundll32.exe CRYPTEXT.dll, CryptExtOpenP10 «файл запроса на сертификат» — открыть данный файл запроса на сертификат.
■ rundll32.exe CRYPTEXT.dll, CryptExtOpenP7R «файл ответа на запрос сертификата» — открыть указанный файл ответа на запрос сертификата.
■ rundll32.exe CRYPTEXT.dll, CryptExtOpenPKCS7 «файл сертификата PCKS #7» — открыть данный файл сертификата PCKS #7.
■ rundll32.exe CRYPTEXT.dll, CryptExtOpenSTR «файл хранилища сертификатов» — открыть указанный файл хранилища сертификатов.
■ rundll32.exe dsquery.dll, OpenSavedDsQuery «файл запроса к службе каталогов ActiveDirectory»— при вызове команды происходит попытка выполнить файл запроса к каталогу Active Directory.
■ rundll32.exe msconf.dll, NewMediaPhone «путь к файлу»— открыть данный файл телефонии. Эта команда используется программой NetMeeting для открытия соответствующих файлов.
■ rundll32.exe msconf.dll, OpenConfLink «путь к файлу» — команда также используется программой NetMeeting. Именно с помощью этой команды создаются ярлыки различных конференций (для автоматического соединения с другими сетевыми компьютерами).
■ rundll32.exe netshell.dll, InvokeDunFile — открыть DUN-файл (Dialup Networking File).
■ rundll32.exe SHDOCVW.dll, OpenURL «путь к файлу» — открыть файл ярлыка Интернета (имеет расширение URL), указанный в качестве параметра функции.
■ rundll32.exe shell32.dll, Control_RunDLL «имя CPL или DLL-файла» — вызов данной команды приводит к запуску соответствующего CPL-файла или определенной функции файла DLL. Например, после вызова команды rundll32.exe shell32.dll, Control_RunDLL main.cpl откроется апплет Мышь. Если вы разочарованы, то могу сказать еще об одной особенности работы данной функции — с ее помощью можно указать вкладку, на которой будет открыт апплет. Например, вызов команды rundll32.exe shell32.dll, Control_RunDLL main.cpl, ,2 приведет к открытию апплета Мышь на вкладке Параметры указателя. Аналогично можно открывать и любые другие вкладки различных апплетов (при этом вкладки нумеруются, начиная с нуля).
Функция Control_RunDLL используется и в таких командах:
• rundll32.exe shell32.dll, Control_RunDLL desk.cpl desk, @Appearance — открыть диалоговое окно Свойства: Экран на вкладке Оформление;
• rundll32.exe shell32.dll, Control_RunDLL desk.cpl desk, @Appearance /Action:OpenMSTheme /file:«путь к файлу темы рабочего стола»и rundll32.exe shell32.dll, Control_RunDLL desk.cpl desk, @Appearance /Action:OpenTheme /file:«путь к файлу темы рабочего стола» — установить файл стиля оформления Windows XP;
• rundll32.exe shell32.dll, Control_RunDLL desk.cpl desk, @Desktop — открыть диалог Свойства: Экран на вкладке Рабочий стол;
• rundll32.exe shell32.dll, Control_RunDLL desk.cpl desk, @Settings — открыть диалог Свойства: Экран на вкладке Параметры;
• rundll32shell32.dll, Control_RunDLL NetSetup.cpl,@0, WNSW — отобразить окно Мастера беспроводной сети;
• rundll32 shell32.dll, Control_RunDLL NetSetup.cpl — отобразить окно Мастера настройки сети.
Особо стоит сказать о двух командах Control_RunDLL, использующих для своей работы библиотеки Windows:
• rundll32.exe shell32.dll, Control_RunDLL hotplug.dll — вызов данной команды отображает диалог «горячего» удаления внешнего устройства (рис. 2.4).
Рис. 2.4. Результат выполнения команды rundll32.exe shell32.dll, Control_RunDLL hotplug.dll
• rundll32.exe shell32.dll, Control_RunDLL input.dll — позволяет вызвать диалог Язык и службы текстового ввода.
ПРИМЕЧАНИЕ
При выполнении приведенной выше команды без указания какого-либо CPL или DLL-файла будет открыто окно Панель управления.
■ rundll32.exe shell32.dll, OpenAs_RunDLL «путь и имя файла» — с помощью данной команды можно отобразить диалоговое окно Открыть с помощью для открытия указанного в параметре функции файла. Например, можно открыть исполняемый файл программы в Блокноте или с помощью другой программы (по умолчанию исполняемые файлы нельзя вызывать с помощью диалога Открыть с помощью).
■ rundll32.exe shimgvw.DLL, ImageView_Fullscreen «путь к файлу изображения» — позволяет открыть указанный файл изображения с помощью программы просмотра изображений и факсов.
Выполнение команд
Существует еще одна интересная возможность, которую можно использовать при разработке файлов сценариев, — выполнение команд, записанных в ветви реестра. Для этого применяются функции библиотеки ADVPACK.dll. Например, после выполнения команды rundll32.exe ADVPACK.dll, UserInstStubWrapper «подраздел» система выполнит строку, содержащуюся в параметре строкового типа RealStubPath, расположенном в ветви реестра HKEY_LOCAL_MACHINE SOFTWAREMicrosoftActive SetupInstalled Components«подраздел» (по умолчанию параметр отсутствует). Одновременно плюсом и минусом данной команды является то, что программа, которую вы запустите после обработки содержимого параметра RealStubPath, будет запущена как процесс, то есть ей будет отказано во взаимодействии с Рабочим столом и она не сможет отобразить свое окно. Минус этого ясен, а плюс можно определить на примере. Если указать в параметре RealStubPath ветви системного реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoftActive SetupInstalled Componentspara следующую команду: rundll32.exe amovie.ocx, RunDll /play /close e:musicB-2волки.wma, которая уже была описана в гл. 1, то после вызова команды rundll32.exe ADVPACK.dll, UserInstStubWrapper para будет воспроизведен данный музыкальный файл. При этом проигрывание данного файла можно будет прекратить только выгрузкой из памяти процесса rundll32.exe, который породил это воспроизведение, ведь никакого окна индикации открытого файла отображено не будет.
Можно также воспользоваться разновидностью приведенной выше команды — rundll32.exe ADVPACK.dll, UserUnInstStubWrapper «подкаталог». После ее вызова будет выполнена строка параметра RealStubPath, расположенного в ветви реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoftActive SetupInstalled Components«подкаталог».Restore. Например, выполнение команды rundll32.exe ADVPACK.dll, UserUnInstStubWrapper para будет использовать параметр из ветви реестра HKEY_LOCAL_MACHINESOFTWARE MicrosoftActive SetupInstalled Componentspara.Restore.
Кроме функций библиотеки ADVPACK.dll, существует еще одна возможность запуска команд из реестра — использование ветви реестра HKEY_CURRENT_USER SoftwareMicrosoftWindowsCurrentVersionRunOnceEx (данная ветвь присутствует и в корневом разделе HKEY_LOCAL_MACHINE). По умолчанию ее содержимое выполняется только при следующем входе пользователя в систему, хотя существует возможность сказать системе, чтобы она обработала содержимое этой ветви немедленно. При этом все команды из ветви после своего выполнения автоматически удаляются. Следует также учитывать одну особенность ветви — если в ней будет определено несколько запусков программ, то все они будут запускаться последовательно. Сначала запустится первая программа, после того, как пользователь ее закроет, запустится вторая программа и т.д.
Формат содержимого данной ветви немного отличается от формата подобных ей ветвей, направленных на выполнение команд при входе пользователя в систему (например, ветви реестра HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun). Каждая программа или команда, которая должна быть запущена, записывается в отдельный раздел данной ветви реестра — название раздела не имеет значения, но лучше последовательно пронумеровать эти разделы, чтобы система могла легко определить, какая программа должна запускаться первой. Параметр По умолчанию каждого раздела определяет название, которое будет отображаться в диалоге индикации установки при выполнении программы, определенной в соответствующем разделе реестра. При этом если параметр По умолчанию не определен, то в диалоге индикации не будет никакой информации о запуске данной программы или команды, хотя она будет запущена. Сама же программа или команда записывается в значении строкового параметра соответствующего раздела (название параметра не имеет значения). В разделе можно определить несколько команд, записав их в несколько строковых параметров, — все эти команды будут выполняться последовательно на данном шаге установки.
Чтобы лучше понять формат данной ветви реестра, рассмотрим один пример. Ниже в листинге приведен пример записей ветви реестра HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnceEx, экспортированных в REG-файл.
Листинг 2.1. Пример содержимого раздела реестра RunOnceExWindows Registry Editor Version 5.00
[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnceEx1]
@="Запуск cmd.exe и calc.exe"
"cmd"="cmd.exe"
"calc"="calc.exe"
[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnceEx2]
@="Запуск блокнотика"
"notepad.exe"="notepad.exe"
Допустим, содержимое приведенного листинга находится в реестре. Теперь нужно ввести команду rundll32.exe IERNONCE.dll, RunOnceExProcess. Она указывает системе, что та должна обработать содержимое ветви системного реестра HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnceEx. Результат обработки данной ветви можно увидеть на рис. 2.5.