
Рис. 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-файла;