Секреты Windows: статьи о реестре, rundll32.exe, программах
Глава 4. Команды Rundll32. 4.1. Диалоги и мастера Windows: Работа с апплетами Windows: Отображение других диалогов - окончание Дата: 13 августа 2009, четверг
Библиотека shell32.dll (общая библиотека оболочки Windows) — это основная библиотека операционной системы Windows, предназначенная для управления интерфейсом операционной системы. Она поддерживает очень много функций, хотя не все из них можно вызвать при помощи команд rundll32.exe.
Некоторые из возможностей данной библиотеки мы с вами уже использовали. Например, внимательный читатель, наверное, заметил, что именно ей принадлежат функции Options_RunDLL и Control_RunDLL, которыми мы пользовались для отображения апплетов и стандартных диалогов операционной системы.
Следует заметить, что помимо функции Control_RunDLL можно использовать функцию Control_RunDLLAsUser. С помощью данной функции выполняется запуск от имени пользователя с административными правами.
Функция OpenAs_RunDLL
Также данной библиотеке принадлежит функция OpenAs_RunDLL, с помощью которой отображается диалог ВЫБОР ПРОГРАММЫ, позволяющий открыть файл с помощью определенной программы. Для этого предназначена команда вида rundll32 shell32.dll OpenAs_RunDLL «файл».
Также диалог ВЫБОР ПРОГРАММЫ можно отобразить при помощи команды rundll32 shell32.dll SHOpenWithDialog, однако эта команда не всегда работает.
Функция ShellExec_RunDLL
Еще одной интересной и, на первый взгляд, бесполезной возможностью библиотеки shell32.dll является функция ShellExec_RunDLL. С помощью данной функции можно выполнить определенную команду. Для этого применяется синтаксис вида rundll32 shell32.dll ShellExec_RunDLL «команда». Если вы недоумеваете, зачем нужна эта функция, тогда ниже приведен пример ее использования.
В первой главе данной книги мы с вами научились создавать свои команды контекстного меню файлов и папок. Если вы когда-нибудь пытались создать команду, запускающую какую-либо консоль управления Microsoft (например, wf.msc), тогда, конечно, знаете, что это дело неблагодарное — при попытке запуска такой команды отобразится сообщение об ошибке. В этом случае вместо обычного запуска консоли нужно использовать команду вида rundll32 shell32.dll ShellExec_RunDLL «консоль».
Функция SHHelpShortcuts_RunDLL
Данная функция позволяет отобразить тот или иной мастер операционной системы. Сам мастер, который будет отображен, зависит от опции функции SHHelpShortcuts_RunDLL. То есть, синтаксис вызова команды следующий: rundll32.exe shell32.dll, SHHelpShortcuts_RunDLL «опция», где «опция» может принимать следующие значения.
Connect. Вызвать мастер ПОДКЛЮЧИТЬ СЕТЕВОЙ ДИСК.
Disconnect. Отключить сетевые диски.
FontsFolder. Отобразить папку шрифтов.
PrintersFolder. Отобразить папку ПРИНТЕРЫ.
AddPrinter. Отобразить мастер УСТАНОВКА ПРИНТЕРА.
Функция PrepareDiscForBurnRunDll
И еще одной функцией, которую мы с вами рассмотрим, будет функция PrepareDiscForBurnRunDll. С ее помощью можно начать процесс записи диска (либо форматирование дискеты) — отобразить диалог выбора формата записываемого диска. Для этого применяется команда вида rundll32.exe shell32.dll, PrepareDiscForBurnRunDll «буква DVD-RW привода».
Другие функции
Остальные функции данной библиотеки представлены в таблице ниже.
Таблица 4.28. Функции библиотеки shell32.dll
RestartDialogEx. Вызвать диалог Чтобы изменения вступили в силу, нужно перезагрузить компьютер.
SHBrowseForFolder. Вызвать диалог Обзор папок.
ShellAboutA. Вызвать диалог О программе.
Диалог Автономные файлы
Вы можете отобразить диалог АВТОНОМНЫЕ ФАЙЛЫ при помощи команд на основе библиотеки cscui.dll (интерфейс кэширования на стороне клиента): rundll32.exe cscui.dll CSCOptions_RunDLL либо rundll32.exe cscui.dll CSCUIOptionsPropertySheet.
Библиотека emdmgmt.dll
Интересные возможности реализованы в библиотеке emdmgmt.dll (служба ReadyBoost). Например, с ее помощью можно отобразить диалог СВОЙСТВА для определенного файла, либо отобразить мастер СИСТЕМА. Все эти возможности реализуются при помощи одной функции, представленной ниже.
rundll32.exe emdmgmt.dll EMDMgmtLaunchProperties «файл». Вызвать диалог СВОЙСТВА для данного файла.
rundll32.exe emdmgmt.dll EMDMgmtLaunchProperties. Вызвать мастер СИСТЕМА.
Просмотр изображений
Для работы с изображениями применяется библиотека shimgvw.dll (просмотр фотоальбома). Именно с ее помощью выполняется распечатывание изображения, а также его отображение в режиме просмотра. Для этого применяются следующие команды.
rundll32.exe shimgvw.dll ImageView_Fullscreen «файл изображения». Открыть изображение в программе ФОТОАЛЬБОМ WINDOWS.
rundll32.exe shimgvw.dll ImageView_PrintTo /pt «файл» %2 %3 %4. Распечатать изображение на указанном принтере.
Работа со сканерами а камерами
Для работы со сканерами и камерами используется библиотека sti_ci.dll (установка устройств неподвижных изображений). В первую очередь, с ее помощью можно вызвать мастер МАСТЕР УСТАНОВКИ СКАНЕРА И КАМЕРЫ. Для этого можно использовать либо функцию AddDevice, либо функцию WiaAddDevice. Обе они отображают одно и то же окно мастера.
Также вы можете воспользоваться функцией InstallWiaService, чтобы выполнить установку службы СЛУЖБА ЗАГРУЗКИ ИЗОБРАЖЕНИЙ WINDOWS.
Диалог Сертификаты
Раньше нам уже встречались диалоги, которые можно отобразить двумя способами. Диалог СЕРТИФИКАТЫ же можно отобразить намного большим количеством способов.
Одним из этих способов является команда на основе библиотеки wintrust.dll (Microsoft Trust Verification APIs): rundll32.exe wintrust.dll OpenPersonalTrustDBDialog (либо команда с использованием той же функции, но библиотеки SOFTPUB.dll).
Также отобразить диалог СЕРТИФИКАТЫ можно при помощи команды rundll32.exe IEAKENG.dll ModifyAuthCode. В этом случае диалог СЕРТИФИКАТЫ будет содержать в себе только одну вкладку — ДОВЕРЕННЫЕ ИЗДАТЕЛИ (рис. 4.08).
Рис. 4.08. Результат выполнения команды rundll32.exe IEAKENG.dll ModifyAuthCode
И еще одним способом отображения диалога СЕРТИФИКАТЫ является команда rundll32.exe CRYPTUI.dll CryptUIStartCertMgr.
Все эти команды отображают диалог СЕРТИФИКАТЫ даже в том случае, если установлены следующие групповые политики.
Групповая политика ОТКЛЮЧИТЬ ВКЛАДКУ «СОДЕРЖАНИЕ» раздела АДМИНИСТРАТИВНЫЕ ШАБЛОНЫ/КОМПОНЕНТЫ WINDOWS/INTERNET EXPLORER/ПАНЕЛЬ УПРАВЛЕНИЯ ОБОЗРЕВАТЕЛЕМ.
Групповая политика ОТКЛЮЧИТЬ ИЗМЕНЕНИЕ ПАРАМЕТРОВ СЕРТИФИКАТОВ раздела АДМИНИСТРАТИВНЫЕ ШАБЛОНЫ/КОМПОНЕНТЫ WINDOWS/INTERNET EXPLORER.
Шифрующая файловая система EFS
Мастера и диалоги, предназначенные для работы с шифрующей файловой системой, хранятся в библиотеке EFSADU.dll (программа шифрования файлов). Например, в данной библиотеке определены следующие функции.
EfsUIUtilShowBalloonAndWait. Отобразить в области уведомления значок ШИФРУЮЩЕЙ ФАЙЛОВОЙ СИСТЕМЕ ТРЕБУЕТСЯ ПИН-КОД СМАРТ-КАРТЫ.
EfsUIUtilSelectCard. Отобразить диалог ИМЕЕТСЯ ЛИ СМАРТ-КАРТА ДЛЯ ШИФРОВАНИЯ ФАЙЛОВ?.
EfsUIUtilPromptForPin. Отобразить в области уведомления значок ШИФРУЮЩЕЙ ФАЙЛОВОЙ СИСТЕМЕ ТРЕБУЕТСЯ ПИН-КОД СМАРТ-КАРТЫ.
EfsUIUtilEncryptMyDocuments. Если шифрование файлов еще ни разу не выполнялось, тогда отобразится диалог с предложением заархивировать файл ключей.
EfsDetail. Отобразить диалог ПОЛЬЗОВАТЕЛЬСКИЙ ДОСТУП К.
BackCurrentEfsCert. Отобразить мастер МАСТЕР ЭКСПОРТА СЕРТИФИКАТОВ.
Другие возможности
В таблице ниже представлены другие возможности команды rundll32.exe для операционной системы Windows Vista.
Таблица 4.29. Другие варианты использования программы rundll32.exe
ntlanman.dll I_SystemFocusDialog. Вызвать диалог о несовместимости компонента с Vista.
BRCplSiw.dll ShowRestoreDialogW. Вызвать сообщение Вы действительно хотите восстановить все содержимое компьютера?