Rundll32.exe — это небольшая программа, поставляемая со всеми версиями Windows.
Она была создана программистами Microsoft для своих нужд и способна выполнять любую Wind32 API-функцию, описанную в библиотеке, как будто эта функция вызывается из программы или сама является полноценной программой. Rundll32.exe создавалась для вызова различных функций из файлов сценариев или INF-файлов, с ее помощью можно выполнить очень много интересных и полезных трюков, описание которых приведено в данной главе.
Перед описанием команд, доступных при работе с rundll32.exe, хотелось бы еще сузить рамки функций, которые необходимо понимать под «любыми» функциями, выполняемыми с помощью данной программы.
Несмотря на то, что программа rundll32.exe способна выполнять любые функции, не все функции смогут быть выполнены — все дело в том, что некоторые из функций могут ожидать каких-то специальных параметров, не являющихся статическими и получаемых с помощью других функций.
Еще хуже ситуация может обстоять в том случае, когда функция не принимает никаких параметров, но при своей работе использует содержимое регистров или памяти компьютера. В этом случае вызов данной функции может быть подобен игре в кости — если вам повезет и все необходимые данной функции параметры окажутся корректными, то она сможет выполниться.
Синтаксис программы rundll32.exe довольно прост:
rundl32 «путь к библиотеке и ее имя», «имя функции в данной библиотеке», «список необходимых параметров через запятую»
Но как же можно вызвать данную программу? Помимо использования вызова в коде сценария, о чем будет рассказано в следующих главах книги, программу можно вызвать и с помощью диалога Запуск программы (Пуск►Выполнить) или в поле команды при создании ярлыка. Например, в окне Запуск программы введите команду rundll32 shell32.dll, ShellAboutA и вы сможете увидеть диалог, подобный приведенному на рис. 1.1.
Рис. 1.1. Окно с информационными сведениями об операционной системе
ВНИМАНИЕ
Если регистр, в котором вы вводите команду, для названия параметров функции и библиотек не важен, то для названия функции следует внимательно следить за его написанием как с точки зрения ошибок, так и с точки зрения регистра каждого отдельного символа, иначе программа rundll32.exe не сможет найти необходимую вам функцию. Например, если вы вместо названия функции ShellAboutA введете название ShellaboutA, то rundll32.exe выведет сообщение о невозможности вызова функции, так как ее нет в соответствующей библиотеке.
Из нескольких предыдущих абзацев вы узнали практически все теоретические выкладки, которые необходимы для работы с программой rundll32.exe. Сейчас же будут перечислены те возможности, которые данная программа может предоставить пользователю. Начнем с описания функций CPL-файлов.
ПРИМЕЧАНИЕ
Перед тем как будут рассмотрены различные функции, которые могут выполняться с помощью программы rundll32.exe, хотелось бы уточнить способ записи некоторых функций. Чуть выше рассмотрена команда, выполняющая функцию ShellAboutA. Как можно заметить, эта функция заканчивается каким-то совершенно ненужным символом — A. Он говорит системе о том, что функция использует для своей работы символы кодировки ASCII (использование одного байта для представления одного символа). Существует еще один символ, которым может заканчиваться функция — символ W. Он говорит системе о том, что функция использует для своей работы символы в кодировке Unicode (для представления одного символа используются два байта). Так вот, эти символы совершенно не обязательны (хотя в очень редких случаях они необходимы) — если вы введете название функции без последнего символа (А или W), то система сама попробует определить, какая кодировка должна использоваться.
Хотя раньше говорилось, что программа rundll32.exe может вызывать функции библиотек, на самом деле ее возможности намного обширнее — она может вызвать функцию отовсюду, где она указана, будь то библиотека, CPL-файлы или сам исполняемый файл программы.
CPL-файл — это специальный файл (их еще называют апплетами), являющийся диалоговым окном, которое вызывается с помощью Панели управления и предназначено для настройки какого-то отдельного компонента операционной системы. Большую часть ссылок на CPL-файлы можно встретить в папке Панель управления, которую можно открыть либо с помощью меню Пуск, либо с помощью вызова команды control или команды shell:ControlPanelFolder. Но операционная система Windows позволяет вызывать CPL-файлы и с помощью ввода их названия в окне Запуск программы (в этом случае расширение CPL указывать обязательно).
В контексте данной книги содержимое СPL-файлов рассматриваться не будет, предполагается, что читатель уже пользовался ими. Исключением могут быть только те случаи, когда соответствующая команда rundll32.exe зависит от установки тех или иных параметров, доступ к которым можно получить из CPL-файла.
Апплет предназначен для редактирования различных специальных параметров настройки клавиатуры, звука, мыши или оболочки Windows. Все эти параметры разрабатывались программистами Microsoft специально для людей с ограниченными физическими возможностями, хотя некоторые из представленных в апплете параметров могут быть полезны и в повседневной работе всех пользователей операционной системы Windows XP.
Чтобы вызвать данный апплет с помощью программы rundll32.exe, необходимо использовать команду rundll32 Access.cpl, DebugMain. Вот, в принципе, и все команды, которые поддерживает апплет access.cpl.
Эта команда открывает диалоговое окно Установка и удаление программ. С его помощью можно как удалять или изменять составляющую различных установленных в системе программ, так и заменять составляющие компоненты самой операционной системы.
В отличие от рассмотренного ранее апплета access.cpl, апплет appwiz.cpl не позволяет вызвать себя с помощью команды программы rundll32.exe. Зато он дает возможность выполнить некоторые действия, другими способами не выполняющиеся. Но перед тем как рассмотреть возможные действия, которые разрешает выполнить апплет appwiz.cpl, скажем несколько слов о работе самого апплета — это поможет нам в понимании работы рассматриваемых далее команд.
Как уже сказано, апплет appwiz.cpl содержит список всех установленных в системе приложений — для его отображения применяется список Установленные программы (рис. 1.2). Но как формируется данный список? Можно подумать, что это происходит при каждом запуске апплета appwiz.cpl путем сканирования файловой системы Windows, но все намного проще. На самом деле данный список расположен в реестре Windows. Для его хранения используется ветвь HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, включающая набор разделов, каждый из которых определяет один элемент списка Установленные программы. Названия этих разделов идентифицируют установленную программу для апплета appwiz.cpl, но при этом не используются в списке Установленные программы. Для указания названия элемента в списке применяется строковый параметр DisplayName, расположенный в каждом из разделов рассматриваемой ветви (см. рис. 1.2).
Рис. 1.2. Формирование списка Установленные программы апплета appwiz.cpl
Здесь не будет полностью рассказано о параметрах разделов ветви реестра Windows HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall — это не является главной темой книги. Поэтому читателям, которым интересна данная тема, рекомендуется купить дополнительную книгу, посвященную только ей. Мы же сейчас займемся тем, для чего и был затеян рассказ о способе хранения списка установленных программ апплетом appwiz.cpl, — описанием команды rundll32.exe, с помощью которой можно удалить программу, указанную в данном списке.
Для того чтобы удалить программу, ссылка на которую содержится в ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, необходимо воспользоваться следующей командой:
rundll32 appwiz.cpl, WOW64Uninstall_RunDLL ,,,«название раздела в ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, идентифицирующего программу»
Например, если вы хотите удалить программу EVEREST Professional v1.50, раздел которой в рассматриваемой ветви назван EVEREST Professional_is1 (рис. 1.3), то необходимо использовать следующую команду:
rundll32 appwiz.cpl, WOW64Uninstall_RunDLL ,,,EVEREST Professional_is1
После ее вызова запустится команда удаления, которая записана в параметре строкового типа UninstallString раздела ветви реестра EVEREST Professional_is1 (рис. 1.3).
Рис. 1.З. Раздел удаляемой программы назван EVEREST professional_is1
Но, кроме удаления программ, апплет appwiz.cpl позволяет выполнять некоторые другие интересные команды, используемые оболочкой Windows. Первой из них является команда rundll32 appwiz.cpl, ConfigStartMenu, позволяющая очистить содержимое вашего меню Пуск. После ее вызова перед вами появится диалог, отображенный на рис. 1.4. С помощью этого диалога можно удалить те из элементов меню Пуск, которые находятся в папке %userprofile%\Главное меню (такие папки, как Администрирование, Стандартные или Автозагрузка удалить нельзя).
Другой командой, которую можно вызвать благодаря апплету appwiz.cpl, является команда rundll32 appwiz.cpl, NewLinkHere «путь к кaтaлогу». С ее помощью можно создать ярлык в каталоге, который вы укажете. Для этого будет вызван специальный мастер создания ярлыков. Доступ к нему можно также получить из списка Создать контекстного меню Рабочего стола или папки, если выбрать в этом списке команду Ярлык.
Рис. 1.4. Результат выполнения команды rundll32 appwiz.cpl, ConfigStartMenu
Bthprops.cpl — это апплет, предназначенный для настройки работы и взаимодействия устройств, подключаемых при помощи беспроводного соединения Bluetooth. По умолчанию, если в системе не установлено (или не зарегистрировано) ни одного устройства, работающего с помощью Bluetooth, то апплет bthprops.cpl и все настраиваемые им параметры недоступны. Если же вы хотите посмотреть, что это за апплет, то можно попытаться воспользоваться некоторыми командами rundll32.exe, использующими файл апплета для своей работы. К сожалению, с помощью таких команд нельзя вызвать само окно апплета, но зато можно воспользоваться некоторыми функциями, которые оно предоставляет. Например, можно вызвать агента подключений Bluetooth, с помощью которого можно подключить устройство Bluetooth, передать или отправить файлы, а также настроить конфигурацию уже подключенных устройств Bluetooth. Для этого необходимо выполнить несколько действий. Во-первых, нужно присвоить DWORD-параметру Notification Area Icon, расположенному в ветви системного реестра HKEY_CURRENT_USER\Control Panel\Bluetooth, значение, равное 1. Это необходимо для того, чтобы мы могли взаимодействовать с агентом подключений посредством его значка, отображаемого на Панели задач. Во-вторых, необходимо воспользоваться командой rundll32.exe для запуска агента: rundll32 bthprops.cpl , , ,BluetoothAuthenticationAgent. После ввода данной команды на Панели задач в области уведомлений появится значок, подобный изображенному на рис. 1.5.
Рис. 1.5. Результат выполнения команды rundll32 bthprops.cpl ,,,BluetoothAuthenticationAgent
ПРИМЕЧАНИЕ
После закрытия агента подключений значение параметра Notification Area Icon автоматически становится равным 0.
Еще одной возможностью, которую предоставляет апплет bthprops.cpl, является возможность вызова диалогового окна свойств подключенного устройства Bluetooth. Для этого используется следующая команда: rundll32 bthprops.cpl , , ,BluetoothDisplayDeviceProperties. Эта команда будет вызывать диалог, подобный приведенному на рис. 1.6.
Рис. 1.6. Результат выполнения команды rundll32 bthprops.cpl ,,,BluetoothDisplayDeviceProperties
ПРИМЕЧАНИЕ
Аналогичные команды можно применить и для апплета irprops.cpl. В этом случае нужно в команде rundll32.exe вместо апплета bthprops.cpl указать апплет irprops.cpl. Несмотря на то, что используются два разных апплета, результат команд будет один и тот же.
Данный апплет знаком, наверное, каждому пользователю Windows — именно он и является диалогом Свойства: Экран, доступ к которому можно получить, если выбрать команду Свойства из контекстного меню Рабочего стола. С помощью данного апплета можно выполнить такие действия, как настройка некоторых параметров оболочки Windows, изменение обоев Рабочего стола, изменение заставки и параметров энергопотребления, изменение разрешения, глубины цвета или частоты обновления экрана.
Конечно, всех этих действий командами rundll32.exe заменить не получится, но некоторые из них можно выполнить и с помощью rundll32. Рассмотрим наиболее интересные команды.
■ rundll32 desk.cpl, DisplayTestSettingsW— позволяет протестировать настройки монитора, во время чего монитор сначала отключается, а потом включается с новыми настройками. Конечно, новые настройки придется изменять посредством реестра, а вообще, эта команда может быть использована не только для тестирования настроек, но и для скрытия деструктивных или других функций сценария.
■ rundll32 desk.cpl, InstallScreenSaver «путь к новому файлу заставки» — с помощью данной команды можно автоматически сменить используемую по умолчанию заставку, отображаемую при простое системы в течение некоторого времени. Эту команду rundll32.exe можно также использовать и без пути к файлу заставки. В этом случае она будет отображать окно Свойства: Экран, открытое на вкладке Заставка.
■ rundll32 desk.cpl, UpdateUIfontsDueToDPIchange — это очень опасная команда, особенно если применять ее без параметров. Ее действия непредсказуемы, но в основном они направлены на обновление параметров настройки оболочки из ветвей реестра HKEY_CURRENT_USER\Control Panel\Desktop и HKEY_CURRENT_USER\Control Panel\Colors. При этом если не указывать параметры вызова команды, то значения параметров, которые она устанавливает в приведенных ветвях реестра, являются случайными.
Конечно, приведенное выше описание команды условно и наигранно, по этой причине для примера результата действий команды хотелось бы представить рис. 1.7. Приведенные на рисунке настройки оболочки были получены после нескольких последовательных вызовов команды rundll32 desk.cpl, UpdateUIfontsDueToDPIchange.
Рис. 1.7. Оказывается, поиск команд rundll32 — это очень опасное занятие
Апплет служит для настройки встроенного брандмауэра Windows (работает ли брандмауэр, за работой в сети каких программ он не следит). Окно этого апплета можно вызвать с помощью команды rundll32 firewall.cpl, ShowControlPanel.
Кроме вызова окна настройки брандмауэра Windows, файл firewall.cpl позволяет вызвать другое окно — окно извещения о том, что функциональность заданной программы будет ограничена. Для этого применяется следующая команда: rundll32 firewall.cpl, ShowNotificationDialog «название прогрaммы». Например, результат вызова команды rundll32 firewall.cpl, ShowNotificationDialog "c:\windows\system32\cmd.exe" можно увидеть на рис. 1.8 (можно просто указать название программы — cmd.exe, в этом случае в строке Имя вместо описания программы будет отображено ее название).
Вызванное окно является мнимым, то есть его вызов ни к какому результату не приведет и никак не повлияет на возможность работы указанной в диалоговом окне программы.
Рис. 1.8. Результат выполнения команды rundll32 firewall.cpl, ShowNotificationDialog "c:\windows\system32\cmd.exe"
Апплет является диалогом Свойства: Интернет, предназначенным для настройки параметров конфигурации браузера Internet Explorer. Доступ к этому диалогу можно получить как через Панель управления, так и с помощью команды Свойства обозревателя меню Свойства браузера Internet Explorer. Уже стало традицией, что доступ к апплету можно получить не только при помощи его названия, но и используя команду rundll32.exe — в данном случае для этого применяется команда rundll32 inetcpl.cpl, LaunchInternetControlPanel. Кроме этой команды, апплет inetcpl.cpl поддерживает довольно много команд rundll32.exe, поэтому для их описания воспользуемся списком.
■ rundll32 inetcpl.cpl, DisplayPopupWindowManagementDialog — позволяет вывести на экран диалог Параметры блокировки всплывающих окон, предназначенный для настройки сайтов, на которые не будут действовать параметры блокировки. При этом в поле Адрес разрешенного Веб-узла будет установлено нечитаемое значение. К сожалению, изменить это значение невозможно. C помощью данного окна можно также определить, будут ли подаваться звуковые сигналы при блокировке всплывающего окна и будет ли отображаться в строке статуса браузера панель информации при блокировке окна.
■ rundll32 inetcpl.cpl, DllInstall — из следующей части, описывающей интересные ветви и параметры реестра, вы узнаете о том, что содержимое списка на вкладке Дополнительно окна Свойства: Интернет хранится в реестре.
При этом его можно редактировать или вообще удалить, чтобы пользователь не смог изменить настройки браузера. Если вы все-таки удалили содержимое списка на вкладке Дополнительно, то, выполнив данную команду rundll32.exe, вы всегда сможете его восстановить (восстанавливается список по умолчанию, то есть если вы добавили к списку свои элементы, то они будут утеряны).
■ rundll32 inetcpl.cpl, LaunchConnectionDialog — позволяет вызвать окно Свойства: Интернет, открытый на вкладке Подключения.
■ rundll32 inetcpl.cpl, LaunchPrivacyDialog — если с помощью предыдущей команды можно было открыть диалог Свойства: Интернет на вкладке Подключения, то с помощью этой команды можно открыть его на вкладке Конфиденциальность.
■ rundll32 inetcpl.cpl, LaunchSecurityDialogEx — позволяет открывать вкладку Безопасность как независимый от диалога Свойства: Интернет элемент системы (рис. 1.9). Другими словами, если две предыдущие команды несмогли бы выполниться в случае, когда с помощью административных шаблонов запрещено отображать соответствующие вкладки или сам диалог, то эта команда не зависит от настроек групповых политик.
Рис. 1.9. Результат выполнения команды rundll32 inetcpl.cpl, LaunchSecurityDialogEx
■ rundll32 inetcpl.cpl, LaunchSiteCertDialog — благодаря этой команде можно вывести диалог Сертификаты, с помощью которого вы сможете импортировать, экспортировать или просто просмотреть список личных сертификатов, а также доверенных издателей, доверенных центров сертификатов и многое другое.
■ rundll32 inetcpl.cpl, OpenLanguageDialog — если два предыдущих диалога не влияли ни на одну программу операционной системы, то диалог, открываемый с помощью этой команды, отображается при нажатии кнопки Языки на вкладке Общие окна Свойства обозревателя.
■ rundll32 inetcpl.cpl, SiteCert_RunFromCmdLine «путь к файлу корневого сертификата» — применяется для запуска установки файла корневого сертификата.
С помощью данного апплета можно отобразить маленькое окно настройки или установки нового игрового манипулятора — джойстика, руля и т.д. Поскольку диалоговое окно данного апплета действительно маленькое, неудивительно, что оно поддерживает только одну команду rundll32.exe — rundll32 joy.cpl, ShowJoyCPL.
В этом разделе будут рассмотрены несколько команд rundll32.exe, предназначенных для отображения той или иной части диалога Свойства: Звук и аудиоустройства. Этот диалог используется для настройки событий системы, которые требуют звукового сопровождения, а также для настройки некоторых возможностей колонок и микрофона. Чтобы отобразить диалог Свойства: Звук и аудиоустройства с помощью rundll32.exe, необходимо воспользоваться командой rundll32 mmsys.cpl, ShowFullControlPanel. Можно также использовать команду rundll32 mmsys.cpl, ShowDriverSettingsAfterFork. В этом случае отображаемый диалог будет открыт на вкладе Оборудование.
Существует возможность вызова отдельных диалогов, используемых для построения диалога Свойства: Звук и аудиоустройства. Например, можно отобразить диалог Свойства аудио (рис. 1.10), являющийся вкладкой Аудио диалога Свойства: Звук и аудиоустройства. Для этого применяется команда rundll32 mmsys.cpl, ShowAudioPropertySheet.
Рис. 1.10. Результат выполнения команды rundll32 mmsys.cpl, showaudiopropertysheet
Апплет отображает новый диалог Windows XP, предназначенный для настройки учетных записей пользователей. Этот диалог имеет очень много интересных возможностей, которые вы можете использовать в том случае, если аутентификация пользователя при его входе в систему на вашем компьютере выполняется с помощью нового стиля оформления Windows XP. Например, вы можете изменить изображение, которое будет выводиться напротив учетной записи конкретного пользователя (рис. 1.11). С помощью этого диалога можно настроить параметры паспорта .NET, а также имя, пароль или тип учетной записи конкретного пользователя.
К сожалению, с помощью команд rundll32.exe нельзя вызвать диалог Учетные записи пользователей или одну из его составляющих, хотя вы можете воспользоваться параметрами вызова апплета nusrmgr.cpl, описанными в приложении 2, чтобы вызвать ту или иную страницу данного диалога.
Рис. 1.11. Изменение изображения, выводимого напротив учетной записи пользователя
Несмотря на то, что данное окно нельзя вызвать с помощью команд rundll32.exe, некоторые возможности апплет nusrmgr.cpl все-таки предоставляет. Например, с его помощью можно удалить из реестра все сведения о диалоге Учетные записи пользователей, в результате чего этот диалог больше не будет работать. Для этого применяется команда rundll32 nusrmgr.cpl, DllUnregisterServer. Конечно, произведенные изменения обратимы. Например, чтобы восстановить в реестре все сведения о диалоге Учетные записи пользователей, нужно воспользоваться командой rundll32 nusrmgr.cpl, DllRegisterServer. Теперь диалог Учетные записи пользователей опять будет работать.
Это последний апплет команды rundll32.exe, который будет рассмотрен. Он предназначен для настройки автоматического обновления Windows и определяет способы его работы: будет ли оно работать; если все-таки будет работать, то в какое время будет происходить подключение к сайту обновления. Апплет также определяет параметры загрузки и установки обновлений. Чтобы отобразить диалоговое окно апплета wuaucpl.cpl с помощью rundll32.exe, необходимо воспользоваться командой rundll32 wuaucpl.cpl, ShowAUControlPanel.
Кроме отображения окна апплета, существует еще одна возможность — отображение справки по использованию автоматического обновления. Для этого применяется команда rundll32 wuaucpl.cpl, OpenAUHelpTopic. При этом следует учитывать, что данная команда работает корректно, только если диалог автоматического обновления отображается, иначе, возможно, придется вызвать ее несколько раз.
Существует возможность установки переключателя Загружать обновления; пользователь назначит время установки в диалоговом окне автоматического обновления Windows. Для этого применяется следующая команда: rundll32 wuaucpl.cpl, SaveAUApprovalOptions. Но она не всегда работает. Скажем даже, что в большинстве случаев она вызывает ошибку, но если несколько раз подряд вызвать данную команду, не закрывая сообщения об ошибках предыдущих команд, то существует большая вероятность того, что переключатель будет установлен. Вы спросите, зачем нужно столько мучиться? Все дело в том, что команда выполняется даже тогда, когда соответствующий диалог (или его настройки) заблокирован администратором (рис. 1.12) (конечно, если у вас есть права на изменение параметров ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ WindowsUpdate\Auto Update).
Команда, которой также можно воспользоваться благодаря апплету wuaucpl.cpl, — rundll32 wuaucpl.cpl, SaveConfigVerToRegistry. Она устанавливает значение DWORD-параметра ConfigVer, расположенного в ветви системного реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update, равным 1. К счастью, эта команда работает чаще, чем ей предшествующая.
Рис. 1.12. Установка второго переключателя, несмотря на блокировку апплета
ActiveX-объекты — это специальные программы, которые не могут быть выполнены непосредственно двойным щелчком кнопкой мыши на файле ActiveX-объекта, но могут быть выполнены под руководством операционной системы Windows. Для этого применяются либо операции вставки и внедрения, либо команда rundll32 . exe. Да, несмотря на то, что ActiveX-объекты не являются полноценными программами, некоторые из них также возможно вызвать как программы. Например, попробуем выполнить команду rundll32 amovie.ocx, RunDll / play /close E:\music\Мультфильмы\Музыка звезд\5.wma (не забудьте изменить путь и имя музыкального файла на свои). Результат выполнения этой команды можно увидеть на рис. 1.13.
Рис. 1.13. Пример вызова ActiveX-объекта
ПРИМЕЧАНИЕ
Плюсом таких вызовов является то, что каждый вызванный ActiveX-объект выполняется как отдельная программа. Другими словами, если вы несколько раз вызовете один и тот же ActiveX-объект, то будет открыто несколько ActiveX-объектов (в данном случае проигрывателей), а не только один.
Рассмотрим приведенный выше вызов ActiveX-объекта детальней: rundll32 amovie.ocx, RunDll /play /close E:\music\Мультфильмы\Музыка звезд\5.wma. Как можно заметить, он практически ничем не отличается от вызова функций из библиотек — amovie.ocx является файлом, из которого берется функция, RunDll является самой функцией, а путь к музыкальному файлу — ее аргументом. Кроме пути к музыкальному файлу, используется еще два аргумента функции — /play и /close. Первый из них говорит о том, что данный ActiveX-объект необходимо вызвать и начать проигрывать, а второй аргумент означает, что после выполнения своей задачи ActiveX-объект должен быть автоматически закрыт.
Кроме функции RunDll, ActiveX-объект amovie.ocx (да и большинство других ActiveX-объектов) поддерживает еще две функции — DllRegisterServer и DllUnregisterServer. Первая из них регистрирует ActiveX-объект в реестре операционной системы, а вторая удаляет из реестра всю информацию об ActiveX-объекте.
ПРИМЕЧАНИЕ
Даже если ActiveX-объект не будет зарегистрирован в системе, его все равно возможно вызвать с помощью функции RunDll или другой подобной функции.
ActiveX-объект amovie.ocx также поддерживает функцию LoadFilterGraph, которая используется для загрузки графического фильтра, но, по мнению автора, данной функции нельзя передать сам путь к фильтру.
Теперь вкратце рассмотрим функции некоторых ActiveX-объектов, которые могут находиться в вашей операционной системе (не забывайте, что эти ActiveX-объекты, как и все остальные, поддерживают и такие функции, как DllRegisterServer и DllUnregisterServer).
■ rundll32 HHCTRL.OCX, doWinMain — выполнение этой команды приводит к вызову диалога HTML Help, приведенного на рис. 1.14. Содержимое диалога (файлы connect.inf и т.д.) находится в каталоге %userprofile%\MZ. Если же данная папка отсутствует в системе, то будет выводиться ошибка о невозможности загрузки страницы.
Этот ActiveX-объект расположен в каталоге %systemroot%\SYSTEM32.
■ rundll32 msdxm.ocx, RunDll /play /stop «путь к музыкальному файлу» — вызов данной функции воспроизводит указанный музыкальный файл с помощью Проигрывателя Windows Media.
Этот ActiveX-объект расположен в каталоге %systemroot%\SYSTEM32.
Рис. 1.14. Вызов программы HTML Help
Вот и все стандартные ActiveX-объекты, которые, кроме DllRegisterServer и DllUnregisterServer, поддерживают дополнительные функции.
Драйверы — это специальные программы, управляющие работой оборудования, для которого они были написаны. Сейчас практически каждое устройство — от оптической мыши до видеокамеры — требует для своего взаимодействия с компьютером отдельный драйвер. Конечно, не все из этих устройств поставляются со своим собственным драйвером — и это неудивительно, ведь операционная система Windows XP уже включает в себя очень много различных драйверов для многих устройств известных производителей. Все они хранятся на установочном диске (а также в локальной файловой системе) в архиве driver.cab и устанавливаются только при нахождении системой нового оборудования.
Как и ActiveX-объекты, драйверы также могут хранить вызов функций, но использование этих функций оказывается не всегда возможным. Во-первых, некоторые драйверы написаны для операционной системы MS-DOS, поэтому применение их функций в операционной системе Windows XP невозможно. Во-вторых, вызов функции уже загруженного драйвера не всегда срабатывает — в большинстве случаев система просто выведет сообщение, подобное приведенному на рис. 1.15.
Рис. 1.15. Как правило, уже загруженные драйверы команды не поддерживают
У себя на компьютере автор книги нашел только одну доступную команду, предоставляемую драйвером WINSPOOL.DRV. Это стандартный драйвер Windows, расположенный в каталоге %systemroot%\system32. Он управляет подключением к принтеру (а также передачей ему заданий) и поддерживает такую команду rundll32.exe:rundll32 WINSPOOL.DRV, ConnectToPrinterDlg. Она выводит диалог для подключения к сетевому принтеру и передачи ему задания. Результат выполнения данной команды будет подобным приведенному на рис. 1.16.
Рис. 1.16. Результат выполнения команды rundll32 WINSPOOL.DRV, ConnectToPrinterDlg
ПРИМЕЧАНИЕ
Это диалоговое окно также можно вызвать с помощью команды rundll32.exe PRINTUI.dll, ConnectToPrinterDlg.
Библиотеки — это специальные файлы с расширением DLL, описывающие все функции, применяемые программой, для которой данная библиотека написана.
Именно библиотеки содержат большинство функций, используемых операционной системой или программой. При этом библиотеки могут применяться как в программах (даже если данная библиотека не была специально написана для соответствующей программы), так и в драйверах, CPL-файлах, ActiveX-объектах и других исполняемых файлах Windows.
Раньше были рассмотрены команды rundll32.exe по файлам, в которых они описаны. Это было более эффективно по той причине, что стандартных CPL-файлов или файлов ActiveX-объектов на компьютере не очень много. Другая картина предстает при взгляде на количество библиотек, зарегистрированных в системе. Чтобы в этом убедиться, достаточно просто заглянуть в каталог %systemroot%\system32 — именно он содержит стандартные библиотеки Windows, которых в этом каталоге можно насчитать сотни. А ведь с каждой программой поставляются еще и свои собственные библиотеки, которые могут находиться как в каталоге, в котором была установлена программа, так и в %systemroot%\system32. Поэтому на этот раз команды rundll32.exe будут рассмотрены не по библиотекам, в которых они описаны, а по действиям, которые они выполняют.
Первым рассмотренным вопросом будет вопрос вызова различных мастеров, предназначенных для установки тех или иных сетевых компонентов компьютера. Автор знает по своему опыту, как иногда бывает сложно найти в файловой системе Windows ссылки на вызовы тех или иных мастеров настройки не только сетевых компонентов, но и любых других частей Windows. Особенно это актуально после преднамеренного удаления данных ссылок на диалоговые окна — когда пользователь хочет минимизации содержимого Windows и удаляет из меню Пуск или из других мест файловой системы все подряд, что ему кажется ненужным.
Рассмотрим команду вызова Мастера установки оборудования. Для его вызова достаточно выполнить команду rundll32.exe ccfgnt.dll, IcfgInstallModem, результат действия которой можно увидеть на рис. 1.17.
Аналогичное окно можно вызвать и с помощью следующей команды: rundll32.exe modemui.dll, InvokeControlPanel.
Рис. 1.17. Результат выполнения команды rundll32.exe ccfgnt.dll, IcfgInstallModem
Если модем уже настроен, то можно вызвать диалог отображения свойств модемов, являющийся апплетом Телефон и модем (telephon.cpl) (рис. 1.18). Для этого применяется команда rundll32.exe TAPI32.dll, internalConfig.
С помощью данного диалога можно настроить дополнительные параметры инициализации модема или используемые им драйверы — для этого применяется вкладка Модемы. Но, кроме вкладки Модемы, данный диалог содержит еще две вкладки. С помощью вкладки Набор номера можно настроить параметры доступа к поставщику услуг Интернета, а с помощью вкладки Дополнительно можно добавить, настроить или удалить службы, которые используются при работе модемов.
Рис. 1.18. Результат выполнения команды rundll32.exeTAPI32.dll, internalConfig
ПРИМЕЧАНИЕ
Если вам необходима только вкладка Набор номера, то можно воспользоваться командой rundll32.exe TAPI32.dll, LOpenDialAsst. С ее помощью можно вывести приведенное выше диалоговое окно, в котором будет доступна только вкладка Набор номера.
Можно вызвать Мастер настройки сети, предназначенный для создания и настройки сетевого соединения между несколькими компьютерами. Для этого необходимо воспользоваться командой rundll32. exe hnetwiz.dll, HomeNetWizardRunDll. Можно также обратиться к другому мастеру для создания сети — Мастеру новых подключений. С его помощью можно подключиться к Интернету, частной сети или сконфигурировать свою сеть. Для вызова этого мастера достаточно воспользоваться командой rundll32.exe netshell.dll, StartNCW. Можно также выполнить команду rundll32.exe RASAPI32.dll, RasCreatePhonebookEntryA. С ее помощью отображается мастер с названием, аналогичным предыдущему (Мастер новых подключений), но немного другой функциональностью. На рис. 1.19 можно увидеть два этих мастера (справа находится мастер, вызываемый командой rundll2.exe RASAPI32.dll, RasCreatePhonebookEntryA, а слева приведено окно второго шага мастера, вызываемого командой rundll32.exe netshell.dll, StartNCW).
Рис. 1.19. Окна мастера подключения к сети
Но это еще не все, ведь кроме обычных сетей — с помощью подключения нескольких компьютеров к одному кабелю — существуют еще и беспроводные сети. Мастер их создания также можно вызвать. Для этого применяется команда rundll32.exe wzcdlg.dll, FlashConfigCreateNetwork. Этот же мастер можно вызвать и с помощью следующей команды: rundll32.exe wzcdlg.dll, FlashConfigRunWizard.
Но если сетевое соединение уже имеется, то можно воспользоваться командой rundll32.exe netplwiz.dll, AddNetPlaceRunDll для вызова Мастера добавления в сетевое окружение. С его помощью можно создать ярлык для веб-узла, FTP-узла, удаленного компьютера и т.д.
Еще одной интересной возможностью является вызов диалога установки дополнительных сетевых компонентов (рис. 1.20), с помощью которого можно установить службы печати для UNIX, различные сетевые службы (одноранговую сеть, слушатель RIP и т.д.), а также средства для наблюдения за сетевыми подключениями (например, WMI-поставщик SNMP и сам протокол SNMP). Чтобы вызвать данный диалог, достаточно воспользоваться командой rundll32.exe netshell.dll, HrLaunchNetworkOptionalComponents.
Рис. 1.20. Результат выполнения команды rundll32.exe netshell.dll, HrLaunchNetworkOptional Components
Кроме различных мастеров установки или работы с сетью, операционная система Windows предоставляет множество других диалогов, которые косвенно или явно относятся к работе с сетевыми компонентами Windows. К таким диалогам можно отнести диалог Настройка автономных файлов, который является вкладкой Автономные файлы диалога Свойства папки. С его помощью можно определить, будут ли использоваться автономные файлы (файлы удаленного компьютера, доступ к которым можно получить даже тогда, когда соответствующий компьютер отключен), и если будут, то когда будут синхронизироваться автономные файлы. Можно также определить место на диске, отводимое для автономных файлов и т.д. Чтобы вызвать диалог Настройка автономных файлов, достаточно воспользоваться командой rundll32.exe cscui.dll, CSCOptions_RunDLL.
Существует возможность вызова диалога Параметры синхронизации, с помощью которого можно определить, какие файлы будут синхронизироваться при входе/выходе или простое системы, а также с помощью какого сетевого подключения они будут синхронизироваться (рис. 1.21). Для этого применяется команда rundll32.exe mobsync.dll, DisplayOptions.
Рис. 1.21. Результат выполнения команды rundll32.exe mobsync.dll, displayoptions
Операционная система Windows позволяет создавать не только автономные файлы. В ней существуют папки, общий доступ к которым можно открыть по сети. По умолчанию в Windows существует стандартный набор скрытых папок общего доступа, определяющих логические диски компьютера, а также два скрытых общих ресурса ADMIN$ и IPCS$ (знак $ в конце общего ресурса как раз и говорит о том, что он является скрытым), предназначенных для администрирования компьютера. Кроме стандартных папок общего доступа, Windows позволяет создать свои открытые папки. Для этого можно воспользоваться несколькими способами — либо создать папку с помощью вкладки Доступ диалога Свойства для папки (нельзя создавать папки общего доступа, если отключена служба Сервер), либо с помощью соответствующей оснастки. Если вы выбрали второй способ, то диалог для создания общего ресурса можно вызвать с помощью команды rundll32.exe ntlanman.dll, ShareCreate. Его же можно вызвать и с помощью команды rundll32.exe ntlanui.dll, ShareCreate, являющейся аналогом предыдущей.
Если же вы выбрали первый способ, то для быстрого доступа к вкладке Доступ диалога Свойства можно воспользоваться следующей командой — rundll32.exe ntshrui.dll, SharingDialog «путь к папке». После ее вызова перед вами отобразится довольно экзотический диалог (если посмотреть на расположение кнопок ОK и Отмена), но тем не менее, несмотря на некоторые недостатки, он работает (рис. 1.22).
Рис. 1.22. Конечно, диалог с небольшими дефектами, но зато работает
Существует возможность просмотра списка всех общих ресурсов, доступных на данном компьютере. Для этого применяется оснастка Общие папки. Но более быстрым способом является непосредственный вызов диалога Общие папки — для этого достаточно просто воспользоваться командой rundll32.exe ntlanman.dll, ShareManage. Кроме просмотра списка общих ресурсов, этот диалог позволяет создать новый общий ресурс, просмотреть свойства общего ресурса или прекратить доступ к нему.
ПРИМЕЧАНИЕ
Диалог можно вызвать и с помощью команды rundll32.exe ntlanui.dll, ShareManage, являющейся аналогом предыдущей команды.
Как можно было заметить, в операционной системе Windows существует очень много мастеров работы с сетью. Это связано с тем, что настройка сети считается сложной задачей, a Microsoft с каждой версией своей операционной системы пытается все больше упростить функции администрирования Windows. Хотя, глядя на такое разнообразие мастеров настройки сети, легко запутаться в том, для чего они применяются и какой из них лучше использовать. Совершенно по-другому обстоят дела с мастерами настройки других компонентов Windows — их не очень много и можно пересчитать по пальцам. Тем не менее они есть, и уже ради этого стоит рассмотреть способы их вызова. Этим мы сейчас и займемся.
■ rundll32.exe sti_ci.dll, AddDevice — с помощью данной команды можно вызвать Мастер установки сканера или цифровой камеры. То же самое делает команда rundll32.exe wiashext.dll, AddDeviceWasChosen.
■ rundll32.exe TCPMonUI.dll, LocalAddPortUI — позволяет вызвать Мастер добавления стандартного порта TCP/IP принтера (рис. 1.23), с помощью которого можно подключиться к удаленному принтеру.
Рис. 1.23. Результат выполнения команды rundll32.exe TCPMonUI.dll, LocalAddPortUI
■ rundll32.exe upnpui.dll, InstallUPnPUI — при вызове данной команды в сетевом окружении появляются значки сетевых UPnP-устройств. Существует также команда и для удаления сетевых UPnP-устройств — rundll32.exe upnpui.dll, UnInstallUPnPUI.
Теперь поговорим о различных мастерах, не относящихся к настройке сети или каких-нибудь компонентов Windows. Например, к таким мастерам можно отнести Мастер сброса паролей (рис. 1.24). С его помощью можно сбросить текущий пароль учетной записи пользователя, предоставив данному мастеру дискету с информацией о пароле. Чтобы вызвать окно данного мастера, достаточно воспользоваться командой rundll32.exe KEYMGR.dll, PRShowRestoreFromMsginaW. Можно также применить следующую команду: rundll32.exe KEYMGR.dll, PRShowRestoreWizardExW. Она выполняет аналогичные действия.
Рис. 1.24. Результат выполнения команды rundll32.exe KEYMGR.dll, PRShowRestoreFromMsginaW
Конечно, необходимость данного мастера немного спорна, ведь если вы вошли в систему, то и так знаете пароль учетной записи данного пользователя и сбросить его можно и без предоставления дискеты с информацией о пароле. Кстати, если у вас нет дискеты с паролем, то данным мастером будет довольно сложно воспользоваться. Поэтому предлагаю сейчас же ее создать. Для этого применяется диалог Мастер забытых паролей (рис. 1.25), отобразить который можно с помощью команды rundll32.exe KEYMGR.dll, PRShowSaveFromMsginaW. Аналогичные действия выполняет следующая команда: rundll32.exe KEYMGR.dll, PRShowSaveWizardExW.
Рис. 1.25. Результат выполнения команды rundll32.exe keymgr.dll, PRShowSaveFromMsginaW
Следующий мастер, который можно вызвать, — Мастер паспорта .NET (рис. 1.26). Такой паспорт может требоваться при посещении некоторых сайтов Интернета (например, сайта почтовой службы Hotmail). Чтобы вызвать данный мастер, достаточно воспользоваться командой rundll32.exe NETPLWIZ.dll, PassportWizardRunDll. Паспорт .NET позволяет использовать один и тот же логин и пароль на всех сайтах, которые поддерживают работу с ним. В паспорте также можно указать дополнительную информацию, тогда ее не придется вводить в формах сайтов. Программисты Microsoft утверждают, что для защиты вашего паспорта .NET используется мощная система шифрования, поэтому взломать его практически невозможно.
Рис. 1.26. Результат выполнения команды rundll32.exe NETPLWIZ.dll, PassportWizardRunDll
Можно вызвать Мастер веб-публикаций, с помощью которого можно опубликовать различные файлы в Интернете или в локальной сети. После этого данные файлы можно будет просмотреть с помощью браузера. Чтобы вызвать данный мастер, достаточно выполнить команду rundll32.exe NETPLWIZ.dll, PublishRunDll.
Еще одной разновидностью диалогов, которые используются в Windows, являются различные диалоги-предупреждения, применяемые при попытке выхода пользователя из системы или при необходимости перезагрузки. Большая их часть является обычными окнами, не несущими никакой функциональности, хотя попадаются и такие, которые действительно перезагружают компьютер.
Одним из таких «полнофункциональных» диалогов является окно Мастера настройки Internet Explorer 6 (рис. 1.27), отображаемое при выполнении команды rundll32.exe IEAKENG.dll, DoReboot. После нажатия кнопки Да компьютер действительно начнет перезагружаться.
Рис. 1.27. Результат выполнения команды rundll32.exe IEAKENG.dll, DoReboot
Существует возможность перезагрузить компьютер без вывода каких-либо диалогов. Для этого применяется следующая команда: rundll32.exe IUENGINE.dll, EngRebootMachine, используемая службой Windows Update. После ее выполнения система автоматически закроет все работающие приложения и начнет перезагрузку компьютера.
Вот, в принципе, и все команды rundll32.exe, которые действительно перезагружают компьютер. Но, кроме них, существует еще несколько интересных команд, которые не перезагружают компьютер, но угрожают это сделать. К таким командам можно отнести rundll32.exe MSGINA.dll, ShellShutdownDialog, вызывающую диалоговое окно завершения работы компьютера, в списке которого доступны команды перезагрузки, выключения и перехода в спящий режим (рис. 1.28).
С помощью команды rundll32.exe SHELL32.dll, RestartDialogEx можно вызвать диалоговое окно Изменение параметров системы, в котором говорится, что после произведенных изменений системы необходимо перезагрузить компьютер.
Рис. 1.28. Результат выполнения команды rundll32.exe MSGINA.dll, ShellShutdownDialog
Еще одним «нефункциональным» диалоговым окном, которое можно вызвать, является окно с сообщением Данный компьютер используется другим пользователем. Для вызова этого окна необходимо выполнить команду rundll32.exe USER32.dll, DisplayExitWindowsWarnings.
В Windows XP присутствуют не только диалоговые окна и мастера для работы с сетью — есть и много других диалоговых окон, некоторые стоят того, чтобы их рассмотреть. Например, существует возможность открытия диалогового окна Сертификаты, предназначенного для просмотра сведений о различных типах сертификатов, установленных на компьютере. Для этого можно выполнить команду rundll32.exe CRYPTUI.dll, CryptUIStartCertMgr, результат чего представлен на рис. 1.29.
Для открытия диалога Сертификаты можно применить еще несколько команд. Первой является команда rundll32 .exe IEAKENG.dll, ModifySiteCert. Вызов ее эквивалентен вызову предыдущей команды. Этот же диалог можно вызвать и с помощью следующей команды: rundll32.exe wintrust.dll, OpenPersonalTrustDBDialog.
Существует возможность вызова диалога Сертификаты, открытого на вкладке Доверенные издатели (в диалоге будет присутствовать только эта вкладка). Для этого необходимо воспользоваться командой rundll32.exe IEAKENG.dll, ModifyAuthCode.
Кроме диалога Сертификаты, команды rundll32.exe позволяют вызвать еще и окно Диспетчера устройств. Для этого достаточно воспользоваться командой rundll32.exe devmgr.dll, DeviceManager_Execute. Это же действие можно выполнить с помощью команды rundll32.exe devmgr.dll, DevicePropertiesA.
Рис. 1.29. Результат выполнения команды rundll32.exe CRYPTUI.dll, CryptUIStartCertMgr
Но и это еще не все. Операционная система Windows XP позволяет открывать следующие диалоговые окна.
■ Rundll32.exe diskcopy, DiskCopyRunDll — позволяет открыть диалоговое окно копирования содержимого одной дискеты на другую (рис. 1.30). После нажатия кнопки Начать будет произведено копирование в память компьютера содержимого дискеты, установленной в дисковод А:. После этого система попросит вставить новую дискету в дисковод А:, на которую будут скопированы данные из памяти компьютера.
Рис. 1.30. Результат выполнения команды Rundll32.exe diskcopy, DiskCopyRunDll
■ rundll32.exe dsquery.dll, OpenQueryWindow — вызов данной команды открывает диалог для поиска в каталоге Active Directory. Если у вас не установлен Active Directory, то диалог все равно будет вызываться, но пользоваться им будет нельзя.
■ rundll32.exe FldrClnr.dll, Wizard_RunDLL ALL — позволяет вызвать Мастер очистки рабочего стола, с помощью которого можно перенести неиспользуемые ярлыки Рабочего стола в специальную папку Неиспользуемые ярлыки. Доступ к этому мастеру также можно получить, нажав кнопку Очистить рабочий стол на вкладке Общие диалога Элементы рабочего стола. Диалог вызывается нажатием кнопки Настройка рабочего стола на вкладке Рабочий стол окна Свойства: Экран.
■ rundll32.exe IEAKENG.dll, BrowseForFolderA «текст» — вызов данной команды отображает диалог, подобный представленному на рис. 1.31. Окно используется для выбора папки, но в нашем случае выбранную папку будет некуда передать, поэтому выполнение данной команды в конечном итоге будет приводить к ошибке. Этот диалог можно вызвать и с помощью команды rundll32.exe IUENGINE.dll, EngBrowseForFolder.
Рис. 1.31. Результат выполнения команды rundll32.exe IEAKENG.dll, BrowseForFolderA «текст»
■ rundll32.exe IEAKENG.dll, ShowDeskCpl — позволяет вывести диалог Свойства: Экран, в котором будет присутствовать только одна вкладка — Рабочий стол. Все остальные вкладки будут скрыты с помощью групповых политик при запуске данной команды (если пользователь не имеет прав на изменение параметров групповых политик, то отображаемый диалог будет содержать все вкладки). После закрытия диалогового окна Свойства: Экран все настройки групповых политик, которые были изменены данной командой, будут удалены.
■ rundll32.exe KEYMGR.dll, KRShowKeyMgr — вызов данной команды отображает диалоговое окно Сохранение имен пользователей и паролей (рис. 1.32).
С помощью этого диалога можно указать или удалить имена пользователей и пароли к различным серверам домена или сети Интернет. После указания этих паролей операционная система Windows будет автоматически их использовать, не спрашивая у вас пароль.
Рис. 1.32. Результат выполнения команды rundll32.exe KEYMGR.dll, KRShowKeyMgr
■ rundll32.exe MSCTF.dll, TF_RunInputCPL — с помощью данной команды вызывается диалог Языки и службы текстового ввода. Благодаря ему можно определить конфигурации клавиш для смены раскладки клавиатуры, раскладку клавиатуры по умолчанию, а также определить настройки языковой панели и дополнительных служб текстового ввода. Доступ к этому диалогу можно получить и после нажатия кнопки Подробнее на вкладке Языки окна Язык и региональные стандарты (intl.cpl).
■ rundll32.exe netplwiz.dll, UsersRunDll — вызов данной команды отображает диалоговое окно для редактирования списка учетных записей пользователей, зарегистрированных в системе (рис. 1.33). С помощью данного диалога можно указать учетную запись пользователя, с правами которого всегда будет выполняться автоматический вход в систему. Для этого достаточно просто снять флажок Требовать ввод имени пользователя и пароля. После этого система попросит вас ввести логин пользователя, с правами которого будет выполняться вход в систему, и его пароль.
ПРИМЕЧАНИЕ
Возможность автоматического входа в систему с правами конкретного пользователя можно установить с помощью реестра. Для этого применяются следующие параметры строкового типа из ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon: AutoAdminLogon — если значение данного параметра равно 1, то автоматический вход в систему с правами конкретного пользователя будет включен; DefaultDomainName — параметр определяет домен, к которому будет выполняться подключение; DefaultUserName — параметр определяет логин пользователя, от имени которого будет выполняться автоматический вход в систему; DefaultPassword — параметр определяет пароль для учетной записи, от имени которой будет выполняться вход в систему (внимание, этот пароль не шифруется, поэтому любой сможет его узнать, просмотрев данную ветвь реестра).
Рис. 1.33. Результат выполнения команды rundll32.exe netplwiz.dll, UsersRunDll
■ rundll32.exe newdev.dll, WindowsUpdateDriverSearchingPolicyUi — позволяет вызвать диалог подключения к Windows Update (рис. 1.34), с помощью которого можно указать, разрешено ли подключение компьютера к сайту Microsoft для скачивания обновлений операционной системы. Данный диалог также можно вызвать, нажав кнопку Узел Windows Update на вкладке Оборудование диалога Свойства системы.
Рис. 1.34. Результат выполнения команды rundll32.exe newdev.dll, WindowsUpdateDriverSearchingPolicyUi
Windows Update является простейшим средством для скачивания с узла Microsoft заплат и обновлений для операционной системы Windows или драйверов для различных устройств. Для своей работы сервер Windows Update использует 443 порт, поэтому он должен быть открыт. Перед тем как загрузить на ваш компьютер обновления, Windows Update проверяет версии установленных в операционной системе компонентов, языковые настройки, а также параметры реестра, описывающие лицензирование продукта; если версия операционной системы не является лицензионной (так называемая пиратская версия), то вам будет отказано в доступе к функции Windows Update. Вместе со скачиваемым обновлением будет загружен уникальный идентификатор, применяемый для идентификации вашего компьютера на сервере Windows Update. Корпорация Microsoft утверждает, что этот идентификатор не используется для вашей идентификации в сети Интернет.
■ rundll32.exe RASDLG.dll, RasAutodialDisableDlgA — вызов данной команды отображает диалог сбоя при автоматическом наборе номера (рис. 1.35).
Рис. 1.35. Результат выполнения команды rundll32.exe RASDLG.dll, RasAutodialDisableDlgA
Если нажать кнопку Да этого диалога, то DWORD-параметру 1 будет присвоено значение 1. Параметр расположен в ветви реестра HKEY_CURRENT_USER\Software\Microsoft\RAS AutoDial\Control\Locations.
■ rundll32.exe shdocvw.dll, DoOrganizeFavDlg — позволяет вызвать диалог Упорядочить избранное, отображенный на рис. 1.36. С его помощью можно создавать, удалять или перемещать папки.
Рис. 1.36. Результат выполнения команды rundll32.exe shdocvw.dll, DoOrganizeFavDlg
■ rundll32.exe SHELL32.dll, Options_RunDLL 0 — вызов данной команды отображает диалоговое окно Свойства папки, с помощью которого можно изменить некоторые стандартные настройки оболочки пользователя, отредактировать параметры различных типов файлов, а также получить доступ к вкладке Автономные файлы. Данный диалог можно открыть, выбрав в меню Сервис пункт Свойства папки.
Возможно использование и другой разновидности данной команды, а именно rundll32.exe SHELL32.dll, Options_RunDLL 1. Она позволяет открыть диалоговое окно Свойства панели задач и меню Пуск. Его же можно открыть с помощью команды Свойства контекстного меню Панели задач.
■ rundll32.exe shell32.dll, SHFormatDrive — выполнение данной команды приводит к открытию диалога форматирования (рис. 1.37).
Рис. 1.37. Результат выполнения команды rundll32.exe shell32.dll, SHFormatDrive
■ rundll32.exe syncui.dll, Briefcase_Intro — с помощью данной команды можно отобразить диалог, появляющийся при создании папки Портфель на Рабочем столе с помощью функций оболочки Windows (рис. 1.38).
Рис. 1.38. Результат выполнения команды rundll32.exe syncui.dll, Briefcase_Intro
При этом сама папка Портфель на Рабочем столе создана не будет — для этого необходимо использовать следующую команду: rundll32.exe syncui.dll, Briefcase Create.
Программа rundll32.exe применяется не только для вызова многообразных диалоговых окон Windows. С ее помощью можно выполнить конфигурирование различных настроек операционной системы Windows — от переустановки всевозможных компонентов Windows до восстановления стандартных параметров пользовательской настройки самой операционной системы. Вкратце опишем команды для решения этих задач.
Перед рассмотрением хотелось бы дать небольшой совет — прежде чем выполнить любую из приведенных ниже функций, особенно если эти функции лишают операционную систему какого-нибудь ее составляющего, нужно два и даже три раза подумать. Ведь никто не может дать гарантии, что после выполнения той или иной команды ваша операционная система сможет загрузиться или работать стабильно.
Первым рассмотренным вопросом будет возможность удаления либо повторной регистрации тех или иных частей операционной системы. Это может быть полезно не только при ограничении доступа к различным компонентам, но и для восстановления поврежденных частей операционной системы Windows XP.
Сначала будут описаны вопросы работы с некоторыми компонентами системы с помощью команд rundll32.exe. Не будем углубляться в функционирование данных компонентов, ведь книга, которую вы держите в руках, написана совершенно не для этого. Вместо этого приведем краткий список команд, с помощью которых можно удалить или заново зарегистрировать в реестре те или иные части операционной системы Windows.
■ AutoDisc.dll — применяется для повторной регистрации (или удаления) в реестре информации, необходимой для автообнаружения электронной почты почтовым клиентом Outlook Express.
■ btpanui.dll — используется для повторной регистрации (или удаления) в реестре ActiveX-объектов, необходимых для работы пользовательского интерфейса Bluetooth (Bluetooth PAN User Interface).
■ CABVIEW.dll — удаление регистрационных данных библиотеки приводит к удалению возможности работы со стандартной программой Windows, предназначенной для работы с файлами с расширением CAB. Регистрация же данной библиотеки приводит к регистрации в реестре расширения CAB.
ПРИМЕЧАНИЕ
Перед удалением регистрационных параметров программы для работы с САВ-файлами операционная система ищет в ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Windows\CurrentVersion\Uninstall разделы CabView и MSCabFileView. Если она их найдет, то будут выполнены команды, записанные в этих разделах, а потом эти разделы будут удалены.
Можно также удалить саму программу для чтения CAB-файлов. Для этого используется команда rundll32.exe CABVIEW.dll, Uninstall. После ее выполнения операционная система попросит подтвердить удаление программы для просмотра САВ-файлов.
■ camocx.DLL — применяется для повторной регистрации (или удаления) в реестре информации, необходимой для работы с камерами и сканерами на данном компьютере.
■ capesnpn.dll — используется для повторной регистрации (или удаления) в реестре информации о расширениях центра сертификации.
■ CdfView.dll — регистрация данной библиотеки приводит к замене сведений о расширениях файлов, предназначенных для работы с файлами каналов Интернета, стандартными настройками этих расширений.
■ CSCUI.dll — при рассказе о командах rundll32.exe, предназначенных для работы с оболочкой Windows, упоминалось о команде, которая отображает диалог Настройка автономных файлов. Возможность работы с автономными файлами присутствовала еще в Windows 2000, но иногда она может быть лишней или даже совершенно ненужной, например, когда пользователи сети постоянно создают такие автономные файлы, а администратору приходится их удалять, так как необходимости в них нет. В этом случае лучшим решением будет простое удаление всех регистрационных данных о библиотеке CSCUI.dll, которая как раз и отвечает за автономные файлы. Для этого, как уже известно, достаточно воспользоваться командой rundll32.exe CSCUI.dll, DllUnregisterServer. После этого вкладка Автономные файлы исчезнет из диалогового окна Свойства папки. Для ее возвращения достаточно просто зарегистрировать библиотеку CSCUI.dll.
Другим способом отключения автономных файлов является удаление возможности синхронизации компьютеров, хотя в этом случае будет трудно выполнить синхронизацию компьютера с другими устройствами, например с мобильным телефоном. Чтобы удалить возможность синхронизации, достаточно воспользоваться командой rundll32.exe mobsync.dll, DllUnregisterServer.
■ DATACLEN.dll — позволяет зарегистрировать в системе сведения очистки дисков Windows.
■ DSKQUOTA.dll — еще одной возможностью, которую предоставляет система, является возможность добавления или удаления настройки квот на диски для различных учетных записей пользователей компьютера. Квоты позволяют указать, сколько места отведено на конкретном диске (диск должен быть отформатирован с помощью файловой системы NTFS) для файлов конкретного пользователя компьютера. Если пользователь попытается занять больше места на диске, чем ему разрешено, то система откажет ему в записи информации на диск (или выведет предупреждение в зависимости от настроек квот). Настройки квот выполняются на вкладке Квота диалога Свойства диска, для которого необходимо указать квоты. Если же диалог Свойства не имеет вкладки Квота, то либо данный диск отформатирован с использованием файловой системы FAT32 или более ранней файловой системы, либо в реестре данные о настройке квот повреждены. Чтобы восстановить их, достаточно воспользоваться командой rundll32.exe DSKQUOTA.dll, DllRegisterServer. Как и предыдущие библиотеки, она также позволяет использовать для удаления возможности создания квот на диски функцию DllRegisterServer.
■ dsquery.dll — описывает возможность поиска в службе каталогов Active Directory и позволяет зарегистрировать или удалить данную возможность.
■ DSSENH.dll — позволяет зарегистрировать или удалить возможность шифрования по алгоритму Диффи-Хеллмана. Можно также зарегистрировать алгоритм шифрования для смарт-карт Gemplus. Для этого используется библиотека gpkcsp.dll.
ПРИМЕЧАНИЕ
Алгоритм Диффи-Хеллмана (в Windows он также называется протоколом распределения открытых ключей) позволяет двум участникам сетевого соединения совместно создать секретный ключ, который будет использоваться ими для шифрования пакетов данных при передаче по сети. Несмотря на то, что в действительности алгоритм Диффи-Хеллмана не является асимметричным алгоритмом шифрования, он имеет все положительные стороны, присущие таким алгоритмам, поэтому его принято считать именно асимметричным алгоритмом шифрования.
■ fontext.dll — перерегистрировать и пересоздать стандартную папку Windows Шрифты (%systemroot%\Шрифты).
■ INITPKI.dll — с помощью регистрации данной библиотеки можно переустановить все настройки центров сертификации и PKI.
■ rundll32.exe ncxpnt.dll, InstallSharing — позволяет переустановить службы работы с папками общего доступа. Если по какой-либо причине на компьютере нельзя создать папки общего доступа (когда отключена служба Сервер, общие папки также создавать нельзя), то можно попробовать воспользоваться данной командой, возможно, были повреждены какие-нибудь сведения реестра, которые можно переустановить.
■ rundll32.exe NTPRINT.dll, ServerInstallW — позволяет установить диспетчер очереди печати.
■ rundll32.exe shimgvw.DLL, DllRegisterServer — с помощью данной команды можно зарегистрировать программу просмотра изображений и факсов (после этого в контекстном меню файлов изображений появится команда Просмотр для открытия данных файлов в этой программе). Если же вы не пользуетесь этой программой, то существует возможность ее удаления (при этом произойдет также удаление команды Просмотр контекстного меню файлов изображений). Для этого достаточно выполнить команду rundll32.exe shimgvw.DLL, DllUnregisterServer.
■ SlayerXP.DLL — если в диалоге Свойства исполняемых файлов (или ярлыков исполняемых файлов) на вашем компьютере отсутствует вкладка Совместимость, с помощью которой можно запустить программу в режиме совместимости с другими операционными системами Windows (рис. 2.1), то можно попробовать зарегистрировать данную библиотеку — именно она отвечает за возможность использования функции совместимости. Можно также воспользоваться функцией DllUnregisterServer для скрытия вкладки Совместимость.
Рис. 2.1. Вкладка Совместимость диалога Свойства исполняемых файлов или ярлыков на них
■ rundll32.exe sti_ci.dll, InstallWiaService — с помощью данной команды можно установить службу неподвижных изображений. Служба предназначена для работы со сканерами и цифровыми камерами.
■ rundll32.exe WebCheck.dll, DllRegisterServer — позволяет зарегистрировать возможность подписки веб-узлов.
■ rundll32.exe WININET.dll, Dlllnstall — вызов данной команды восстанавливает по умолчанию настройки из ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Passport.
Консоль — это специальный файл для работы с консолью управления Microsoft (программа mmc.exe, о которой будет рассказано в главе 3 книги), имеющий расширение MSС и содержащий одну или несколько оснасток. Кроме пользовательских консолей, которые вы можете создать на основе оснасток, используемых вами в работе чаще всего, существуют также стандартные консоли, поставляемые вместе с операционной системой Windows. Вот о работе этих стандартных консолей мы сейчас вкратце и поговорим.
Большая часть стандартных консолей Windows включает в себя одну оснастку. Каждая оснастка должна быть зарегистрирована в реестре, чтобы ею можно было воспользоваться. Например, если оснастка не будет зарегистрирована в системе, то при попытке открытия консоли, содержащей эту оснастку, перед вами отобразится диалог, подобный приведенному на рис. 2.2.
Рис. 2.2. Ошибка инициализации оснастки, вызванная отсутствием сведений о ней в реестре
Если вы когда-нибудь увидите подобный диалог, то не нужно сразу переустанавливать Windows, — все дело в том, что в реестре сведения о данной оснастке были повреждены. Восстановить их можно будет с помощью одной из приведенных ниже команд rundll32.exe.
■ rundll32.exe devmgr.dll, DllRegisterServer — позволяет зарегистрировать оснастку Диспетчер устройств (devmgmt.msc), с помощью которой можно просмотреть конфигурацию и состояние установленного на компьютере оборудования.
■ rundll32.exe els.dll, DllRegisterServer — дает возможность зарегистрировать оснастку Просмотр событий (eventvwr.msc), с помощью которой можно просмотреть записи журналов Система, Приложений или Безопасность.
■ rundll32.exe FILEMGMT.DLL, DllRegisterServer — позволяет зарегистрировать оснастку Общие папки (fsmgmt.msc), с помощью которой можно просмотреть сведения обо всех папках общего доступа данного компьютера, а также удалить или добавить общую папку.
■ rundll32.exe GPEDIT.DLL, DllRegisterServer — дает возможность зарегистрировать оснастку Групповые политики (gpedit.msc), с помощью которой настраиваются различные ограничения для учетной записи пользователя.
■ rundll32.exe IEAKSIE.DLL, DllRegisterServer — с помощью данной команды не регистрируется оснастка как таковая. В данном случае можно зарегистрировать возможность настройки групповых политик для браузера Internet Explorer (доступ к этим настройкам можно получить с помощью оснастки gpedit.msc — Конфигурация пользователя►Конфигурация Windows►Настройка Internet Explorer).
■ rundll32.exe IPSECSNP.DLL, DllRegisterServer — выполнение команды приводит к регистрации в реестре оснастки IPSEC.
■ rundll32.exe IPSMSNAP.DLL, DllRegisterServer — позволяет зарегистрировать в реестре оснастку Монитор IP-безопасности, с помощью которой можно просмотреть такие сведения о текущем сетевом сеансе, как количество принятых и отправленных байт, количество принятых cookies и т.д.
■ rundll32.exe localsec.dll, DllRegisterServer — дает возможность зарегистрировать оснастку Локальные пользователи и группы (lusrmgr.msc), позволяющую добавить, удалить или отредактировать группу, к которой принадлежит учетная запись конкретного пользователя.
■ rundll32.exe mycomput.dll, DllRegisterServer — позволяет зарегистрировать консоль Управление компьютером (compmgmt.msc), которая содержит оснастки на все случаи жизни: Просмотр событий, Общие папки, Локальные пользователи и группы, Журналы и оповещение производительности, Диспетчер устройств, Съемные ЗУ и т. д.
■ rundll32.exe SnmpSnap.dll, DllRegisterServer — выполнение команды приводит к регистрации оснастки расширения SNMP.
ПРИМЕЧАНИЕ
Существует противоположная возможность — удаление сведений о конкретной оснастке. Для этого понадобится воспользоваться командой соответствующей библиотеки DllUnregisterServer.
Если же ни одна из предыдущих команд не помогла, то можно попробовать воспользоваться командой rundll32.exe MMCNDMGR.DLL, DllRegisterServer. Она перерегистрирует в реестре саму консоль управления Microsoft, а также некоторые стандартные оснастки данной консоли.
В конце данного раздела рассмотрим несколько команд, которые можно использовать для восстановления многих пользовательских настроек операционной системы Windows к их стандартному состоянию (такими, какими они были в момент установки системы).
■ rundll32.exe SHELL32.dll, DllInstall — вызов данной команды восстанавливает по умолчанию настройки основных стандартных ActiveX-объектов системы, а также настройки параметров ветвей реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartMenu, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced и т. д.
■ rundll32.exe SYSSETUP.dll, RepairStartMenuItems — выполнение этой команды восстанавливает по умолчанию содержимое меню Пуск (при этом ссылки на установленные программы не исчезают). По умолчанию устанавливаются параметры ветви системного реестра HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders, определяющей пути к папкам Windows (Мои документы, Мои рисунки, Мои видеозаписи и т. д.). Результат выполнения данной команды можно увидеть на рис. 2.3.
Рис. 2.3. Результат выполнения команды rundll32.exe SYSSETUP.dll, RepairStartMenultems
■ rundll32.exe SYSSETUP.dll, RunOEMExtraTasks — вызов данной команды возвращает на Рабочий стол ярлыки Проигрывателя Windows Media и Internet Explorer. Это выполняется путем присваивания значения yes параметру строкового типа DesktopShortcut, расположенному в ветви системного реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MediaPlayer\Setup, а также путем присваивания значения 0 параметру DWORD-типа {871С5380-42A0-1069-A2EA-08002B30309D}, расположенному в ветвях реестра Windows HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu и HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ NewStartPanel.
■ rundll32.exe SYSSETUP.dll, SetupOobeCleanup — вызов данной команды очищает наиболее важные файлы операционной системы. При этом удаляются и заново создаются (на основе текущих настроек операционной системы) все кусты реестра, а также удаляются различные ТМР-файлы.
ВНИМАНИЕ
После применения функций из библиотеки SYSSETUP.dll могут быть заменены стандартные системные файлы, поэтому все установленные в операционной системе заплаты и пакеты обновлений придется переустановить заново.
Теперь рассмотрим несколько команд rundll32.exe, предназначенных для работы с файловой системой Windows. С их помощью можно как создавать файлы, так и удалять уже созданные файлы и каталоги Windows, но нельзя указать содержимое файлов.
Например, для создания файла можно воспользоваться командой rundll32.exe admparse.dll, CheckDuplicateKeysA «путь и имя файла с расширением». Она имеет один большой недостаток — после запуска вызывает ошибку. Тем не менее со своей работой она справляется — после ее выполнения будет создан или заново переписан указанный в параметре функции файл.
ПРИМЕЧАНИЕ
Например, подобные команды можно использовать для очистки файлов журналов при входе пользователей в систему, указывая их в одном из параметров реестра, предназначенных для автозагрузки.
С помощью команд rundll32.exe можно удалить каталог или файл. Для этого достаточно воспользоваться приведенной далее командой: rundll32.exe ADVPACK.dll, DelNodeRunDLL32 «путь к кaтaлогу или файлу». Функция DelNodeRunDLL32 была написана специально для вызова с помощью команды rundll32.exe, поэтому никаких ошибок при своей работе она не выдает.
Существует еще одна команда, с помощью которой можно выполнить удаление. Но с ее помощью можно удалить только содержимое, а не сам каталог (то есть переписать необходимый каталог). Это команда rundll32.exe IEAKENG.dll, BToolbar_SaveA «путь к папке». Если указанная в данной команде папка уже существует, то она будет автоматически удалена, а потом заново создана.
ПРИМЕЧАНИЕ
Существует один интересный плюс этой команды — с ее помощью можно создать папки даже там, где пользователю это сделать нельзя. Например, в каталоге %userprofile%\Local Settings\Temporary Internet Files\Content.IE5.
Последняя команда, которую мы рассмотрим, — rundll32.exe WININET.dll, RunOnceUrlCache «путь к каталогу». Это очень страшная и непредсказуемая команда. Она имеет примерно следующий алгоритм работы: сначала она пытается открыть все содержащиеся в указанной папке файлы и папки. Если при попытке открытия файла или папки система вернула данной команде флаг FILEATTRIBUTETAGINFORMATION, то команда удаляет соответствующий файл или папку.
ПРИМЕЧАНИЕ
Данная команда используется браузером Internet Explorer для удаления временных файлов из папки %userprofile%\Local Settings\Temporary Internet Files при закрытии окна браузера, если значение DWORD-параметра Persistent из ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\InternetSettings\Cache равно 0.
Теперь рассмотрим несколько команд для выполнения или регистрации файлов. Например, как можно установить INF-файл с помощью команды rundll32.exe? Для этого применяется несколько команд, каждая из которых предназначена для отдельной версии INF-файлов.
Чтобы установить обычный INF-файл, необходимо воспользоваться следующей командой — rundll32.exe setupapi.dll, InstallHinfSection «раздел в файле для начала установки», «флаг», «путь и имя файла». При этом «флаг» может принимать следующие значения:
■ 0 — не перезагружать компьютер после установки INF-файла;
■ 1 — перезагружать компьютер после установки INF-файла;
■ 2 — спрашивать о перезагрузке компьютера после установки INF-файла;
■ 3 — если нужно, то перезагружать компьютер после установки INF-файла;
■ 4 — если нужно, то спрашивать о перезагрузке компьютера после установки INF-файла.
Например, с помощью данной команды можно выполнить следующие действия.
■ rundll32.exe setupapi.dll, InstallHinfSection DefaultInstall 132 wsh.inf — восстановление в реестре настроек сервера сценариев Windows, а также расширений, ему необходимых.
■ rundll32.exe setupapi.dll, InstallHinfSection DefaultInstall 132 sr.inf — воссоздание в реестре настроек службы Восстановление системы, а также ярлыка программы Восстановление системы в меню Пуск.
■ rundll32.exe setupapi.dll, InstallHinfSection DefaultInstall 132 %17%\PCHealth.inf — восстановление настроек службы для работы с Центром справки и поддержки.
■ rundll32.exesetupapi.dll, InstallHinfSection DefaultUninstall 132 %17%\PCHealth.inf — удаление настроек службы для работы с Центром справки и поддержки.
■ rundll32.exe setupapi.dll, InstallHinfSection DefaultInstall 132 %17%\dfrg.inf — восстановление настроек оснастки dfrg.msc и функции BootDefrag.
■ rundll32.exe setupapi.dll, InstallHinfSection RestoreBrowserSettings 132 %17%\iereset.inf — воссоздание настроек браузера Internet Explorer.
Для того чтобы зарегистрировать расширенный INF-файл, вам понадобится команда rundll32.exe ADVPACK.dll, LaunchINFSectionEx «имя файла», «имя раздела», «имя cab-файла», «флаг». Она для своей работы требует как стандартные параметры функции установки (имя INF-файла и раздел в нем, с которого начинается установка), так и специальные параметры.
■ Имя САВ-файла, содержащего все файлы, которые устанавливает данный расширенный INF-файл при своей работе.
■ Флаг работы процесса установки, наиболее полезные значения которого следующие:
• 4 — не выводить промежуточные результаты установки INF-файла;
• 16 — обновить оболочку операционной системы после установки INF-файла;
• 32 — выполнить резервное копирование данных перед установкой;
• 64 — выполнить откат установленного INF-файла;
• 256 — не строить список файлов при установке INF-файла;
• 512 — при установке INF-файла принудительно задерживать регистрацию ActiveX-объектов, которые должны быть зарегистрированы с помощью данного INF-файла.
Кроме INF-файлов, библиотека ADVPACK.dll позволяет также зарегистрировать отдельный ActiveX-объект. Каждый ActiveX-объект поставляется в виде файла с расширением OCX, регистрация которого происходит с помощью такой команды: rundll32.exe ADVPACK.dll, RegisterOCX «путь и имя файл .ocx».
Теперь рассмотрим набор команд rundll32.exe, предназначенных для открытия файлов Windows, имеющих специальные расширения и содержимое.
■ rundll32.exe CdfView.dll, OpenChannel «путь и имя файла канала» — открыть данный файл канала.
■ rundll32.exe CdfView.dll, Subscribe «путь и имя файла подписчика» — сделать данный канал доступным автономно.
■ rundll32.exe CRYPTEXT.dll, CryptExtAddCER «файл сертификата безопасности» — добавить данный файл сертификата безопасности.
■ rundll32.exe CRYPTEXT.dll, CryptExtAddCRL «файл списка отзывов сертификатов» — присоединить данный список отзыва сертификатов.
■ rundll32.exe CRYPTEXT.dll, CryptExtAddCTL «файл списка доверия сертификатов» — добавить данный список доверия сертификатов.
■ rundll32.exe CRYPTEXT.dll, CryptExtAddP7R «файл ответа на запрос сертификата» — присоединить данный файл ответа на запрос сертификата.
■ rundll32.exe CRYPTEXT.dll, CryptExtAddPFX «файл обмена личной информацией» — добавить данный файл обмена личной информацией.
■ 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\ SOFTWARE\Microsoft\Active Setup\Installed Components\«подраздел» (по умолчанию параметр отсутствует). Одновременно плюсом и минусом данной команды является то, что программа, которую вы запустите после обработки содержимого параметра RealStubPath, будет запущена как процесс, то есть ей будет отказано во взаимодействии с Рабочим столом и она не сможет отобразить свое окно. Минус этого ясен, а плюс можно определить на примере. Если указать в параметре RealStubPath ветви системного реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\para следующую команду: rundll32.exe amovie.ocx, RunDll /play /close e:\music\B-2\волки.wma, которая уже была описана в гл. 1, то после вызова команды rundll32.exe ADVPACK.dll, UserInstStubWrapper para будет воспроизведен данный музыкальный файл. При этом проигрывание данного файла можно будет прекратить только выгрузкой из памяти процесса rundll32.exe, который породил это воспроизведение, ведь никакого окна индикации открытого файла отображено не будет.
Можно также воспользоваться разновидностью приведенной выше команды — rundll32.exe ADVPACK.dll, UserUnInstStubWrapper «подкаталог». После ее вызова будет выполнена строка параметра RealStubPath, расположенного в ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\«подкаталог».Restore. Например, выполнение команды rundll32.exe ADVPACK.dll, UserUnInstStubWrapper para будет использовать параметр из ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Active Setup\Installed Components\para.Restore.
Кроме функций библиотеки ADVPACK.dll, существует еще одна возможность запуска команд из реестра — использование ветви реестра HKEY_CURRENT_USER\ Software\Microsoft\Windows\CurrentVersion\RunOnceEx (данная ветвь присутствует и в корневом разделе HKEY_LOCAL_MACHINE). По умолчанию ее содержимое выполняется только при следующем входе пользователя в систему, хотя существует возможность сказать системе, чтобы она обработала содержимое этой ветви немедленно. При этом все команды из ветви после своего выполнения автоматически удаляются. Следует также учитывать одну особенность ветви — если в ней будет определено несколько запусков программ, то все они будут запускаться последовательно. Сначала запустится первая программа, после того, как пользователь ее закроет, запустится вторая программа и т.д.
Формат содержимого данной ветви немного отличается от формата подобных ей ветвей, направленных на выполнение команд при входе пользователя в систему (например, ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run). Каждая программа или команда, которая должна быть запущена, записывается в отдельный раздел данной ветви реестра — название раздела не имеет значения, но лучше последовательно пронумеровать эти разделы, чтобы система могла легко определить, какая программа должна запускаться первой. Параметр По умолчанию каждого раздела определяет название, которое будет отображаться в диалоге индикации установки при выполнении программы, определенной в соответствующем разделе реестра. При этом если параметр По умолчанию не определен, то в диалоге индикации не будет никакой информации о запуске данной программы или команды, хотя она будет запущена. Сама же программа или команда записывается в значении строкового параметра соответствующего раздела (название параметра не имеет значения). В разделе можно определить несколько команд, записав их в несколько строковых параметров, — все эти команды будут выполняться последовательно на данном шаге установки.
Чтобы лучше понять формат данной ветви реестра, рассмотрим один пример. Ниже в листинге приведен пример записей ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnceEx, экспортированных в REG-файл.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnceEx\1]
@="Запуск cmd.exe и calc.exe"
"cmd"="cmd.exe"
"calc"="calc.exe"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnceEx\2]
@="Запуск блокнотика"
"notepad.exe"="notepad.exe"
Допустим, содержимое приведенного листинга находится в реестре. Теперь нужно ввести команду rundll32.exe IERNONCE.dll, RunOnceExProcess. Она указывает системе, что та должна обработать содержимое ветви системного реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnceEx. Результат обработки данной ветви можно увидеть на рис. 2.5.
Рис. 2.5. Способ работы запуска команд из ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
Как видно на рисунке, при запуске команды rundll32.exe появляется диалог индикации, в котором указано, какой шаг установки сейчас выполняется. При этом был запущен Калькулятор, так как при сортировке между названиями параметров в разделе 1 Калькулятор, судя по названию параметра, запускается первым. После того как вы закроете окно Калькулятора, будет открыто окно командного процессора. При этом индикатор будет все еще указывать на первый шаг, ведь еще не началась обработка содержимого следующего раздела ветви (раздела 2). После того как вы закроете окно командного процессора, будет запущен Блокнот, и при этом индикатор начнет указывать на второй шаг операции установки.
Если вы не укажете значений параметров по умолчанию ни в одном из разделов данной ветви реестра, то индикатор установки отображаться не будет. Тем не менее сами команды будут выполняться.
В данном разделе будут перечислены некоторые команды rundll32.exe, которые не вошли ни в один из предыдущих разделов, но тем не менее с их помощью можно выполнить те или иные действия.
■ rundll32.exe INITPKI.dll, InitializePKI — позволяет установить поддержку файлов расширений сертификатов и отношения доверия в Active Directory.
■ rundll32.exe mobsync.dll, RegSetUserDefaults — с помощью данной команды можно быстро восстановить стандартные настройки синхронизации текущего пользователя при помощи сетевого соединения LAN. Все эти настройки находятся в ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Syncmgr\AutoSync\«имя пользователя», которую команда и переписывает при своем запуске.
■ rundll32.exe mshtml, PrintHTML «путь к файлу» — с помощью этой команды можно вызвать диалог Печать для печати указанного файла.
■ rundll32 printui.dll, PrintUIEntry /s — позволяет отобразить диалоговое окно Свойства: Сервер печати. Аналогичное окно можно вызвать и с помощью контекстного меню папки Принтеры и факсы. Для этого в данном контекстном меню нужно выбрать команду Свойства сервера.
■ rundll32.exe MSI39.dll, VMAskDisableAutorun — очень интересная команда, которая используется при установке программы VMware. Сейчас практически повсюду можно услышать совет о том, как с помощью реестра отключить функцию автозапуска компакт-дисков — для этого нужно DWORD-параметру AutoRun, расположенному в ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdrom, присвоить значение 0. Можно это сделать и без обращения к реестру — достаточно вызвать данную команду, после чего перед вами отобразится диалог с вопросом, действительно ли вы хотите отключить автозапуск дисков (рис. 2.6), на который нужно ответить Yes. Следует только учитывать, что если автозапуск уже отключен, то никакого диалога выведено не будет.
Рис. 2.6. Результат выполнения команды rundll32.exe MSI39.dll, VMAskDisableAutorun
Если же вы уже запретили автозапуск компакт-дисков, то с помощью еще одной команды — rundll32.exe MSI39.dll, VMRestoreRegistry— можно включить его снова.
■ rundll32.exe NETPLWIZ.dll, ClearAutoLogon — еще одна интересная команда. Сейчас стало модно конфигурировать на компьютере автоматический вход в систему с правами указанного пользователя. Как вызвать диалог для этого, было рассказано ранее, сейчас же мы решим задачу отключения данной функции. Функция полезна лишь в домашних условиях — в корпоративной сети ее установка на клиентских компьютерах может создать большую брешь в среде безопасности предприятия. Если вам все время приходится проверять компьютеры на автоматический вход в систему, то для облегчения своей работы вы можете воспользоваться данной командой, ведь после ее вызова функция автоматического входа в систему будет отключена.
■ rundll32.exe NETPLWIZ.dll, SHDisconnectNetDrives — вызов данной команды приводит к отключению всех сетевых дисков (дисков, которые создаются с помощью команды Подключить сетевой диск в меню Сервис папки или в контекстном меню значка Мой компьютер). Если на данный момент ни один диск не подключен, то будет выведено сообщение о том, что сетевых дисков, которые можно отключить, нет.
ПРИМЕЧАНИЕ
Сам же мастер подключения сетевых дисков можно вывести не только с помощью меню Сервис или контекстного меню значка Мой компьютер, но и с помощью команды rundll32.exe shell32.dll, SHHelpShortcutsRunDLL Connect. При этом с помощью команды rundll32.exe shell32.dll, SHHelpShortcuts_RunDLL Disconnect можно выполнить отключение дисков.
■ rundll32.exe netshell.dll, DoInitialCleanup — выполнение данной команды удаляет содержимое ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards.
■ rundll32.exe NTPRINT.dll, PSetupKillBadUserConnections — вызов данной команды очищает неработающие соединения с принтерами. Список всех соединений с принтерами можно найти в ветви реестра HKEY_CURRENT_USER\Printers\Connections, которую как раз и просматривает данная команда.
При этом список неработающих соединений находится в параметре строкового типа Bad Connections, расположенном в ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print.
■ rundll32.exe NWCFG.dll, CleanupRegistryForNWCS — позволяет очистить реестр от настроек NWC (оболочка расширения для NetWare). После выполнения команды параметру NwcsInstalled в ветви HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NWCS присваивается значение 0 (имеет тип DWORD). При запуске данной команды удаляется содержимое ветвей реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved (только несколько параметров) и HKEY_CLASSES_ROOT\Network\Type\3, а также сведения об ActiveX-объектах.
Если же вам необходимо выполнить обратную операцию, то есть установить или перерегистрировать в реестре информацию об NWC, то можно воспользоваться командой rundll32.exe NWCFG.dll, SetupRegistryForNWCS, которая именно для этого и предназначена.
■ rundll32.exe NWPROVAU.dll, NwCleanupGatewayShares — выполнение этой команды очищает список общих папок для клиентов NetWare. Список расположен в двух ветвях реестра — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NWCWorkstation\Shares и HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NWCWorkstation\Drives. Содержимое именно этих ветвей и удаляется соответствующей командой.
■ rundll32.exe powrprof.dll, SetSuspendState — вызов данной команды переводит компьютер в состояние спящего режима (если этот режим поддерживается оборудованием и включен на вкладке Спящий режим диалога Электропитание). Спящий режим — это режим работы компьютера, при котором все содержимое памяти сбрасывается на жесткий диск и компьютер выключается. Плюсом является быстрый переход между спящим режимом и обычным состоянием компьютера — в зависимости от объема оперативной памяти, установленной на компьютере, после подачи питания до входа в систему проходит отнескольких секунд до нескольких десятков секунд (не учитывая время на самотестирование компьютера). При этом пропускаются такие шаги загрузки, как выбор операционной системы (если на компьютере используется несколько операционных систем) и собственно регистрация пользователя в системе — просто содержимое сброшенной на жесткий диск памяти помещается обратно в оперативную память, и работа системы продолжается, как будто никакого спящего режима не было.
■ rundll32.exe RASAPI32.dll, RasSetSharedAutoDial — выполнение данной команды присваивает DWORD-параметру SharedAutoDial значение, равное 1. Он находится в ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters.
■ rundll32.exe rasdlg.dll, RasUserEnableManualDial — выполнение данной команды присваивает DWORD-параметру OperatorDial значение, равное 1. Он находится в ветви реестра HKEY_USERS\.DEFAULT\Software\Microsoft\RAS Logon Phonebook.
■ rundll32.exe rasman.dll, RasDoIke — выполнение данной команды может привести к частичному зависанию компьютера. Сначала нельзя получить доступ к Панели задач и меню Пуск, а также ко всем открытым приложениям. При попытке открытия Диспетчера задач происходит полное зависание компьютера. При этом такие программы, как Проигрыватель Windows Media, будут работать, будет возможно обращаться к общедоступным папкам компьютера, но нельзя будет получить доступ к оболочке операционной системы.
■ rundll32.exe shell32.dll, Control_FillCache_RunDLL — позволяет выполнить начальную инициализацию Панели управления.
■ rundll32.exe SPOOLSS.DLL, UpdatePrinterRegAll — с помощью этой команды можно обновить в реестре все сведения о принтерах системы для всех пользователей. Команда удаляет (и заново создает на основе текущих данных) следующие ветви реестра: HKEY_CURRENT_USER\Printers\DevModePerUser, HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Devices, HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts.
■ rundll32.exe sti_ci.dll, ?CreateWiaShortcut@@YGHXZ— выполнение команды приводит к созданию в списке Стандартные меню Пуск ярлыка Мастера работы со сканером или цифровой камерой. Существует также возможность автоматического удаления созданного ярлыка. Для этого используется команда rundll32.exe sti_ci.dll, ?DeleteWiaShortcut@@YGHXZ.
ПРИМЕЧАНИЕ
Ярлык Мастера работы со сканером или цифровой камерой можно создать и с помощью команды rundll32.exe sti_ci.dll, WiaCreateWizardMenu.
■ rundll32.exe syncui.dll, Briefcase_Create — с помощью этой команды на Рабочем столе можно создать папку Портфель, которая по своей функциональности напоминает автономные файлы. При подключении ноутбука или карманного компьютера (КПК) при использовании папки Портфель система будет сверять ее содержимое на ноутбуке с содержимым на настольном компьютере. Если в данной папке на компьютере (или ноутбуке) будут найдены новые версии файлов, они автоматически заменят собой более старые версии, хранящиеся в папке, расположенной на ноутбуке (или на компьютере соответственно).
■ rundll32.exe url.dll, FileProtocolHandler «путь к каталогу» — вызов данной команды приводит к открытию в Проводнике соответствующей папки. Возможен вызов данной команды без параметра — в этом случае будет открыта папка профиля текущего пользователя (%userprofile%).
■ rundll32.exe url.dll, TelnetProtocolHandler «IP-адрес удаленного компьютера» — позволяет подключиться с помощью telnet к указанному вами удаленному компьютеру.
■ rundll32.exe user32.dll, LockWorkStation — с помощью этой команды можно заблокировать работу компьютера. Теперь доступ к компьютеру можно будет получить, только если ввести пароль текущего зарегистрированного в системе пользователя или пароль учетной записи администратора компьютера.
■ rundll32.exe USER32.dll, mouse_event — необычная команда. Первый ее запуск эквивалентен нажатию (но не отпусканию) правой кнопки мыши. После выполнения этой команды в первый раз при перемещении указателя мыши будет отображаться прямоугольник выделения. Второй же запуск данной команды эквивалентен нажатию правой кнопки мыши, то есть отображается контекстное меню.
ПРИМЕЧАНИЕ
Эта команда не всегда работает корректно. Иногда сразу при первом запуске может отобразиться контекстное меню, а иногда вообще ничего не происходит.
■ rundll32.exe user32.dll, SetCursorPos —вызов данной команды приводит к установке указателя в правый нижний угол экрана.
■ rundll32.exe user32.dll, SwapMouseButton — с помощью данной команды можно поменять местами функциональность левой и правой кнопок мыши, то есть левая кнопка мыши будет открывать контекстное меню, а правая — выделять значки. Обратно сменить функциональность клавиш мыши с помощью данной команды нельзя. Это же можно сделать с помощью апплета Мышь — достаточно установить или снять флажок Обменять назначение кнопок на вкладке Кнопки мыши.
■ rundll32.exe w32time.dll, W32TimeVerifyJoinConfig — дает возможность присвоить параметрам DWORD-типа MaxNegPhaseCorrection, а также MaxPosPhaseCorrection, расположенным в ветви системного реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config, значения 0xffffffff.
Этим параметрам можно также присвоить значения 0xD2F0. Для этого используется команда rundll32.exe w32time.dll, W32TimeVerifyUnjoinConfig.
В этой главе будут рассмотрены некоторые интересные команды, используемые различными стандартными приложениями, поставляемыми вместе с операционной системой Windows. К таким приложениям в первую очередь можно отнести Internet Explorer и Outlook Express.
Internet Explorer — браузер, входящий в стандартную поставку любой версии операционной системы Windows XP. Более того, он является ее неотъемлемой частью, и, как бы данный браузер ни критиковали, большая часть пользователей Интернета для доступа к Сети использует именно его. В поставку Internet Explorer входит браузер версии 6.0, поэтому команды rundll32.exe, которые будут описаны в данном разделе книги, содержатся в библиотеках именно этой версии браузера. Хотя это не значит, что более ранние версии Internet Explorer не будут поддерживать этих команд.
Теперь рассмотрим команды rundll32.exe, предназначенные для взаимодействия с пользователем. Раньше при описании файла inetcpl.cpl уже упоминались такие команды, но, кроме них, существует также некоторое количество команд, предоставляемых стандартными библиотеками Windows.
Первой из этих команд является rundll32.exe IEAKENG.dll, ModifyZones. С ее помощью можно отобразить диалог Свойства обозревателя, в котором будут доступны только две вкладки — Безопасность и Конфиденциальность. Диалог не является какой-то новой разновидностью окна Свойства обозревателя, отображаемого после выбора команды Свойства обозревателя меню Сервис, — это все тот же диалог, доступ к остальным вкладкам которого был запрещен при запуске команды с помощью групповых политик. После нажатия кнопки OK данного окна настройки групповых политик опять примут свой стандартный вид — все изменения, которые были сделаны командой, будут удалены.
ПРИМЕЧАНИЕ
Если данная команда будет использоваться учетной записью, которой запрещено изменять групповые политики, то вызываемый диалог будет содержать все вкладки.
Если вас удивила предыдущая команда, то вы еще больше удивитесь, когда узнаете о команде rundll32.exe IEAKENG.dll, ShowInetcpl. При ее выполнении операционная система с помощью групповых политик сначала запрещает доступ ко всем вкладкам диалога Свойства обозревателя, а потом пытается открыть этот диалог. При этом, как и следовало ожидать, у команды ничего не получается и она выдает сообщение о том, что данный диалог запрещен администратором. После этого команда удаляет все изменения групповых политик, которые она выполняла в начале своей работы.
ПРИМЕЧАНИЕ
Если данная команда, как и предыдущая, будет применяться пользователем, для которого запрещено изменение групповых политик, то диалог Свойства обозревателя будет открыт.
И наконец-то команды rundll32.exe для настройки конфигурации Internet Explorer. Этих команд не очень много, но они могут быть полезны в некоторых случаях. Например, если вы изменили настройки брэндов Internet Explorer (логотип в правом верхнем углу браузера, высота и фон панели инструментов) с помощью параметров реестра, описанных в части 2, посвященной работе с реестром Windows, и теперь хотели бы восстановить стандартные настройки, то нет необходимости пользоваться реестром. Достаточно выполнить команду rundll32.exe iedkcs32.dll, BrandCleanInstallStubs, после чего браузер пересоздаст ветви реестра, описывающие используемые им брэнды. Можно также воспользоваться командой rundll32.exe iedkcs32.dll, Clear. Но в этом случае будут переписаны изменения не только брэндов, но и других параметров браузера Internet Explorer.
Еще одной проблемой, которую позволяют решить команды rundll32.exe, является возможность перезаписи стандартных пунктов меню Избранное браузера Internet Explorer (ссылки на MSN.com, Windows Media, Hotmail, Программы радиопередач). Если вы удалили эти ссылки и теперь вам необходимо получить доступ к одному из перечисленных сайтов, то можно просто воспользоваться командой rundll32.exe iedkcs32.dll, BrandIE4 SIGNUP. После этого стандартные ссылки меню Избранное будут созданы заново.
Вот, собственно, и все. Но в конце данного раздела рассмотрим некоторые дополнительные команды rundll32.exe, которые вам могут понадобиться.
■ rundll32.exe SHDOCVW.dll, SetShellOfflineState — вызов данной команды приводит к установке флажка Работать автономно в меню Файл, после чего при следующем запуске браузера Internet Explorer попытка подключения к Интернету осуществляться не будет — она произойдет только после снятия этого флажка или после ввода адреса сайта в адресной строке.
■ rundll32.exe WININET.dll, DeleteIE3Cache — позволяет удалить содержимое каталогов cache1, cache2, cache3 и cache4, расположенных поадресу %userprofile%\Local Settings\Temporary Internet Files\Content.IE5.
■ rundll32.exe WININET.dll, InternetClearAllPerSiteCookieDecisions — вызов данной команды приводит к очищению содержимого ветви HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\P3P\History.
■ rundll32 INETCFG.dll InetSetAutoProxyA «IP-адрес» — с помощью данной команды можно установить флажок Использовать сценарий автоматической настройки в диалоговом окне Настройка локальной сети, а также записать в поле Адрес данного диалогового окна значение указанного в вызываемой команде IP-адреса. Диалоговое окно Настройка локальной сети вызывается нажатием кнопки Настройка LAN на вкладке Подключения диалога Свойства обозревателя.
В контексте системного реестра Windows изменяются значения параметров AutoProxyDetectMode (параметр REG_BINARY-типа становится равен 1) и AutoConfigURL (параметр строкового типа, хранящий значение указанного IP-адреса). Оба этих параметра находятся в ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings.
Отдельно стоит сказать о возможностях работы с ограничениями, которые можно настроить для закрытия доступа к страницам, содержащим насилие или другие запретные темы. Доступ к данным настройкам можно получить после нажатия кнопки Настройка на вкладке Содержание диалога Свойства обозревателя. После нажатия этой кнопки перед вами появится диалог Ограничение доступа (или будет выведен запрос на ввод пароля, если возможность ограничения уже включена), открытый на вкладке Оценки, с помощью которой можно настроить уровень ограничения доступа (перемещая ползунок на уровень, который соответствует вашим представлениям о морали). На вкладке Разрешенные узлы можно указать страницы, на которые не будут распространяться ограничения доступа. На вкладке Общие определяется пароль для доступа к ограничениям, а также файл системы оценок, который будет определять дополнительные параметры того, к какому сайту можно подключиться, а к какому нет (по умолчанию в Windows существует только один файл оценок, но новые можно создать или скачать в Интернете). На вкладке Дополнительно определяется сайт, который будет использоваться для получения инструкций системой оценки (если ей необходимы инструкции), а также дополнительный файл правил для доступа к сайтам, являющийся последним рубежом между вами и нежелательными сайтами.
Теперь посмотрим, какие возможности предоставляют команды rundll32.exe при работе с ограничением доступа.
В первую очередь с помощью команд rundll32.exe можно открыть диалог Ограничение доступа. Для этого используется команда rundll32.exe IEAKENG.dll, ModifyRatings, результат выполнения которой приведен на рис. 3.1. Аналогичных действий можно добиться, если воспользоваться командой rundll32.exe MSRATING.dll, RatingSetupUI.
Рис. 3.1. Результат выполнения команды rundll32.exe IEAKENG.dll, ModifyRatings
Существует возможность быстрого открытия диалога Системы оценок (рис. 3.2). Для этого используется команда rundll32.exe MSRATING.dll, ClickedOnRAT, после выполнения которой будет открыт диалог Ограничение доступа на вкладке Общие, а также Системы оценок.
Рис. 3.2. Результат выполнения команды rundll32.exe MSRATING.dll, ClickedOnRAT
Существует еще одна интересная возможность — установка файла правил PICS с помощью команды rundll32.exe MSRATING.dll, ClickedOnPRF «путь к файлу правил PICS». После вызова данной команды произойдет открытие диалога Ограничение доступа (на вкладке Дополнительно) и браузер попытается импортировать указанный вами файл правил PICS в реестр.
Наконец, если вы уже настроили ограничения доступа, но теперь необходимо установить такие же ограничения на другом компьютере, то можно воспользоваться командой rundll32.exe IEAKENG.dll, ImportRatingsA «путь и имя inf-файла». После ее выполнения (не всегда выполняется с первого раза) будет создан INF-файл, включающий большую часть настроек ограничений доступа (разрешенные и запрещенные узлы, пароль, подсказка, правила PICS и т. д.). В указанной папке будет создан INF-файл с именем ratrsop.inf, содержащий дополнительные настройки.
После применения созданных файлов вы можете воспользоваться следующей командой: rundll32.exe MSRATING.dll, RatingEnable — для быстрого включения созданных вами ограничений доступа. После этого операционная система попросит вас ввести пароль и при правильном пароле включит ограничения.
ПРИМЕЧАНИЕ
Существует возможность перерегистрации параметров реестра, используемых для определения расширений файлов для файлов правил PICS и систем оценок. Для этого достаточно воспользоваться командой rundll32.exe MSRATING.dll, DllRegisterServer. Можно также применить команду rundll32.exe MSRATING.dll, DllUnregisterServer. В этом случае все сведения о расширениях файлов, используемых функцией ограничения доступа, будут удалены из реестра.
Как и Internet Explorer, Outlook Express входит в стандартную поставку операционной системы Windows и является почтовым клиентом, предназначенным для отправки и получения писем c почтового сервера, такого как, например, www.mail.ru. Outlook Express имеет намного меньше параметров rundll32.exe, которые могут быть интересны, но тем не менее о них стоит рассказать.
ПРИМЕЧАНИЕ
Некоторые команды для своей работы используют библиотеки, расположенные в том же каталоге, что и файл msimn.exe. В этом случае в описываемой команде rundll32.exe будет применяться стандартный путь к каталогу почтового клиента — %programfiles%\Outlook Express. Если в вашей системе используется другой путь, то при определении команды нужно будет указать его.
Почтовый клиент Outlook Express также можно запустить с помощью команды rundll32.exe. Для этого применяется следующая команда: rundll32.exe "%programfiles%\Outlook Express\MSOE.DLL", CoStartOutlookExpress. Она просто открывает окно Outlook Express, но имеет один большой недостаток — довольно часты случаи, когда окно после своего открытия автоматически закрывается (если установлена возможность автоматического завершения Outlook Express при возникновении ошибки).
Более интересной возможностью, которую предоставляет почтовый клиент, является реализуемая командой rundll32.exe "%programfiles%\Outlook Express\MSOE.DLL", MAPISendDocuments возможность открытия диалогового окна Вложенные файлы, отображенного на рис. 3.3. С его помощью можно создать и отправить письмо, при этом темой письма будет Вложенные файлы (хотя никто вам не помешает изменить тему, если это будет нужно).
Рис. 3.3. Результат выполнения команды rundll32.exe "%programfiles%\Outlook Express\MSOE.DLL", MAPISendDocuments
Теперь поговорим о конфигурации программы Outlook Express. В данном случае речь пойдет о различных компонентах почтового клиента, которые можно удалить либо воссоздать с помощью команд rundll32.exe.
Бывают ситуации, когда после неправильно установленной программы или сбоя системы перестают читаться файлы с различными расширениями. В нашем случае это файлы, предназначенные для открытия ссылок на почтовые или новостные серверы. Это говорит о том, что при сбое была удалена часть содержимого корневого раздела реестра HKEY_CLASSES_ROOT (о содержимом этого раздела читайте в следующей части) или только сведения о конкретных расширениях. Если это случилось и при этом не читаются только файлы, предназначенные для хранения ссылок на почтовые или новостные серверы, то нет смысла полностью переустанавливать почтовый клиент Outlook Express — намного проще воспользоваться несколькими командами rundll32.exe. Первой такой командой является следующая: rundll32.exe "%programfiles%\Outlook Express\MSOE.DLL", SetDefaultMailHandler. Она предназначена для переустановки всех сведений реестра об идентификаторе mailto (ветвь реестра HKEY_CLASSES_ROOT\mailto), который определяет файлы, предназначенные для описания ссылок на почтовые серверы. После выполнения данной команды идентификатор mailto будет удален из реестра и заново создан на основе стандартных настроек почтового клиента Outlook Express.
Второй такой командой является следующая: rundll32.exe "%programfiles%\Outlook Express\MSOE.DLL", SetDefaultNewsHandler. Она удаляет и заново восстанавливает по умолчанию содержимое идентификаторов news, snews и nntp.
ПРИМЕЧАНИЕ
Стоит отметить, что при использовании предыдущих команд будут созданы стандартные идентификаторы. Другими словами, они будут ссылаться на почтовый клиент Outlook Express, а не на клиент электронной почты, который установлен в данный момент в качестве клиента по умолчанию.
Еще одной проблемой, которая может произойти, является повреждение сведений об ActiveX-объектах, принадлежащих почтовому клиенту Outlook Express. Если эти повреждения незначительны, то можно попробовать исправить и их. Например, можно переписать сведения о доступных форматах импорта сообщений в почтовом клиенте. Эти сведения необходимы для работы Мастера импорта сообщений (Файл►Импорт►Сообщения) и позволяют импортировать сообщения формата Microsoft Exchange, Messenger, Netscape, Microsoft Mail и т.д. Если эти сведения будут повреждены, то единственным доступным форматом импорта будет формат Microsoft Outlook 6.0 (рис. 3.4) и, чтобы решить возникшую проблему, достаточно воспользоваться командой rundll32.exe "%programfiles%\Outlook Express\oeimport.dll", DllRegisterServer.
ПРИМЕЧАНИЕ
Возможна и обратная ситуация — когда вы намеренно хотите избавиться от ненужных форматов импорта/экспорта сообщений. В этом случае достаточно воcпользоваться командой rundll32.exe "%programfiles%\Outlook Express\oeimport.dll", DllUnregisterServer, и все сведения об импорте/экспорте сообщений исчезнут. Потом вы в любой момент сможете добавить эти сведения, если воспользуетесь описанной функцией библиотеки DllRegisterServer.
Рис. 3.4. Результат выполнения команды rundll32.exe "%programfiles%\Outlook Express\oeimport.dll", DllUnregisterServer
Но не только импорт сообщений можно восстановить — можно также восстановить диалоги импорта и экспорта адресных книг (Файл►Импорт►Другая адресная книга и Файл►Экспорт►Адресная книга). Если ActiveX-объекты для данных диалогов будут повреждены, то диалоги все равно будут отображаться, но воспользоваться ими будет нельзя. Чтобы восстановить ActiveX-объекты для импорта/экспорта адресных книг, необходимо вызвать следующую команду rundll32.exe "%programfiles%\Outlook Express\WABIMP.dll", DllRegisterServer. Кроме того, команды rundll32.exe также позволяют выполнить и противоположную операцию — удаление возможности использования импорта/экспорта адресных книг. Для этого достаточно применить команду rundll32.exe "%programfiles%\Outlook Express\WABIMP.dll", DllUnregisterServer.
Еще одной возможностью, которую можно восстановить, является возможность поиска людей в Интернете. Если поиск вам срочно необходим, то достаточно воспользоваться командой rundll32.exe "%programfiles%\Outlook Express\WABfind.dll", DllRegisterServer, и в подменю Найти меню Пуск появится команда Людей. Если же она там уже имеется, но вы ею никогда не пользовались и пользоваться не собираетесь, то можно ее удалить. Для этого достаточно выполнить команду rundll32.exe "%programfiles%\Outlook Express\WABfind.dll", DllUnregisterServer.
Однако не только Internet Explorer и Outlook Express имеют в своих библиотеках функции, поддерживаемые командой rundll32.exe. Этим могут похвастаться и другие программы.
Программа Microsoft Visual Studio .NET является средой разработки, поддерживающей создание приложений на многих языках программирования. Неудивительно, что этот «тяжелый» по своей функциональности пакет поставляется вместе со многими библиотеками, которые можно использовать при работе с командой rundll32.exe.
Например, с помощью следующей команды: rundll32.exe dfshim.dll, ShBackgroundUpdateW — можно запустить службу фонового обновления программы Microsoft Visual Studio .NET. После выполнения данной команды будет запущен новый процесс dfsvc.exe.
Существует возможность прекращения работы данного процесса с помощью команды rundll32.exe. Для этого применяется следующая команда: rundll32.exe dfshim.dll, KillService.
Программа VMware является эмулятором операционных систем семейств Linux, UNIX, Windows и т.д. Она включает в себя очень много команд rundll32 . exe, некоторые из них уже были рассмотрены ранее (например, команды отключения и включения автозапуска компакт-диска). Перечислим другие команды этой программы.
■ rundll32.exe MSI39.dll, VMCleanFiles — позволяет очистить компьютер от драйверов программы VMware. После ее вызова происходит удаление из каталога %systemroot%\SYSTEM32\DRIVERS файлов драйверов wmnetuserif.sys, wmnetbridge.sys, wmnet.sys и wmnetadapter.sys.
■ rundll32.exe MSI39.dll, VMDeleteFiles — если предыдущая команда позволяла удалять файлы драйверов VMware, то эта команда дает возможность удалять остальные файлы VMware, а также сведения о них из реестра.
■ rundll32.exe MSI3 9.dll, VMDeleteRegistry — после вызова данной команды происходит удаление из реестра всех сведений о программе VMware.
■ rundll32.exe MSI3 9.dll, VMCreateVMwareAccount — позволяет создать учетную запись администратора VMware.
■ rundll32.exe xvidvfw.dll, Configure — с помощью этой команды можно вызвать диалог настройки Xvid (рис. 3.5).
Рис. 3.5. Результат выполнения команды rundll32.exe xvidvfw.dll, Configure
Таким образом, в этой главе были рассмотрены некоторые интересные команды, используемые различными приложениями.