Недокументированные и малоизвестные возможности Windows XP — страница 2 из 28

Конфигурация

Программа rundll32.exe применяется не только для вызова многообразных диалоговых окон Windows. С ее помощью можно выполнить конфигурирование различных настроек операционной системы 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

В конце данного раздела рассмотрим несколько команд, которые можно использовать для восстановления многих пользовательских настроек операционной системы 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-файл.

 Листинг 2.1. Пример содержимого раздела реестра RunOnceEx

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.

Глава 3