Команда RUNDLL32 – выполнить в командной строке функцию, экспортированную библиотекой DLL.



Команда RUNDLL32 (RUNDLL для 16-разрядных Windows) изначально разрабатывалась корпорацией Microsoft для внутреннего использования в качестве отладочного программного обеспечения и предназначалась для вызова API-функций, экспортируемых библиотеками DLL. Но поскольку RunDLL32 оказалась удобным и простым средством, предоставляющим реализовать системные возможности общего характера, в настоящее время она включена в состав всех дистрибутивов Windows и широко используется в качестве стандартного компонента системы. С помощью утилиты rundll32 можно выполнить любую API-функцию, описанную в библиотеке, как будто эта функция вызывается из программы, написанной для использования данной функции.

DLL - Dynamic Link Library — библиотека динамической компоновки, динамически подключаемая библиотека, которая может многократно использоваться разными программными приложениями. Описание библиотек и функций можно найти на сайте сети разработчиков Microsoft MSDN

Хотя утилита rundll32.exe способна выполнять любые функции, результат такого выполнения зависит от самой вызываемой библиотеки. Если функция, например, выполняет какие-либо вычисления, основанные на содержимом оперативной памяти или регистров, подготовленных другими функциями, то результат ее выполнения будет непредсказуемым и на экране пользователь не увидит никаких результатов или увидит сообщение об ошибке. Но если вызывается функция, например, отображающая сведения об операционной системе, то на экране отобразится соответствующая информация.

Формат командной строки RUNDLL32:



RUNDLL32.EXE < имя_библиотеки_dll >,< точка входа функции > < аргументы функции >

Имена функций и параметры чувствительны к регистру, поэтому обязательно учитывайте этот факт при наборе команд. При отсутствии аргументов (параметров) функций или их неверных значениях, команда может завершиться без каких либо сообщений или же с сообщением об ошибке.

Примеры использования RUNDLL32



Одна из наиболее часто используемых библиотек – имеющаяся во всех версиях операционных систем (ОС) семейства Windows shell32.dll. Данная библиотека содержит несколько десятков функций, большинство из которых предназначено для получения информации о системе и системного управления.

rundll32.exe shell32.dll,ShellAboutA – отобразить сведения о Windows. Выполняется функция ShellAboutA из библиотеки shell32.dll. Расширения файлов набирать не обязательно.

Пример команды без расширений:

rundll32 shell32,ShellAboutA

Если в имени библиотеки регистр символов не играет никакого значения, то в имени функции он должен обязательно соблюдаться. Например, выполнение команды, где имя функции указано без соблюдения регистра символов

rundll32 shell32,shellAbouta

завершится сообщением

Ошибка в shell32.dll
Нет точки входа: shellAbouta



Rundll32 – нет точки входа.


Выполнение же команды RUNDLL32.EXE SHELL32.DLL,ShellAboutA закончится обычным отображением сведений о системе.

rundll32 shell32,Control_RunDLL - открыть окно "Панель управления";

rundll32 shell32,Control_RunDLL desk.cpl - открыть окно "Свойства Экрана" панели управления. Как и в предыдущем примере, вызывается функция Control_RunDLL библиотеки shel32.dll, но ей передается параметр desk.cpl;

rundll32 shell32, RestartDialogEx - вызвать окно с запросом на перезагрузку Windows. Вместо функции RestartDialogEx можно использовать функцию RestartDialog однако, нужно учитывать тот факт, что последняя разрабатывалась для 16-битных Windows, и в тех случаях, когда в библиотеке присутствует функция с Ex, предпочтительнее использовать ее, во избежание проблем с совместимостью;

Некоторые библиотеки могут содержать функцию для отображения подсказки по использованию:

RUNDLL32 printui.dll,PrintUIEntry /? - отобразить справочную информацию по пользовательскому интерфейсу принтера.

Нужно отметить, что возможности утилиты rundll32.exe нередко используются вирусописатели, в частности для вызова внедренных в легальный код вредоносных функций, использования поддельных библиотек, например, загружаемых из каталога временных файлов пользователя и т.п. Другими словами, файл библиотеки имеет вполне легальное имя, например то же shell32.dll но находится не в каталоге \Windows\System32 и реализует не стандартные функции оболочки системы, а функции подготовленными авторами вредоносного программного обеспечения (ПО).

Для получения информации об экспортируемых функциях библиотек сторонних производителей, можно использовать обычный текстовый редактор (Wordpad, например, позволяет читать текст в dll - файле и искать названия функций) или специализированное программное обеспечение, как например, DLL Export Viewer от Nirsoft.

Пример списка экспортируемых shell32.dll функций в среде Windows 10, полученного с помощью программы DLL Export Viewer:


DllExp.exe – просмотр списка экспортируемых функций библиотекой DLL.


Полный список или только выбранные функции можно сохранить в текстовом формате.



Сохранение списка экспортируемых функций библиотекой DLL в текстовом формате.


Подсвеченная курсором функция RestartDialog может использоваться для запроса на перезагрузку компьютера.

Естественно, экспортируемые библиотеками функции зависят от версии Windows и они не могут быть одинаковыми и в Windows XP, и в Windows 11. Рассматриваемые ниже примеры приведены для Windows 10/11

Элементы Панели Управления через shell32.dll

RUNDLL32 SHELL32, Control_RunDLL - открыть Панель Управления.

Элементы Панели управления представляют из себя файлы с расширением .cpl, находящиеся в папке Windows\System32. Для открытия какого-либо элемента используется конструкция

RUNDLL32 SHELL32, Control_RunDLL файл.cpl [параметры]

Примеры:

RUNDLL32 SHELL32, Control_RunDLL appwiz.cpl - Программы и компоненты.

RUNDLL32 SHELL32, Control_RunDLL bthprops.cpl - Настройка Bluetooth.

RUNDLL32 SHELL32, Control_RunDLL desk.cpl - Настройки дисплея.

RUNDLL32 SHELL32, Control_RunDLL FireWall.cpl - Настройки Брандмауэра.

RUNDLL32 SHELL32, Control_RunDLL hdwwiz.cpl - Диспетчер устройств.

RUNDLL32 SHELL32, Control_RunDLL inetcpl.cpl - Настройки Интернет Проводника.

RUNDLL32 SHELL32, Control_RunDLL intl.cpl - Настройки языковых параметров.

RUNDLL32 SHELL32, Control_RunDLL irprops.cpl - Настройки инфракрасной связи.

RUNDLL32 SHELL32, Control_RunDLL joy.cpl - Настройка игровых устройств.

RUNDLL32 SHELL32, Control_RunDLL main.cpl - Настройки мыши.

RUNDLL32 SHELL32, Control_RunDLL mmsys.cpl - Настройки звука.

RUNDLL32 SHELL32, Control_RunDLL ncpa.cpl - Настройки сети.

RUNDLL32 SHELL32, Control_RunDLL powercfg.cpl - Электропитание

RUNDLL32 SHELL32, Control_RunDLL sysdm.cpl - Свойства Системы.

RUNDLL32 SHELL32, Control_RunDLL TabletPC.cpl - Перо и сенсорные устройства.

RUNDLL32 SHELL32, Control_RunDLL telephon.cpl - Телефонное или модемное соединение.

RUNDLL32 SHELL32, Control_RunDLL timedate.cpl - Дата и время.

RUNDLL32 SHELL32, Control_RunDLL wscui.cpl - Центр безопасности и обслуживания.

Для некоторых элементов Панели управления можно указать дополнительные параметры, например, открываемую вкладку:

RUNDLL32 SHELL32, Control_RunDLL sysdm.cpl,,1 - Свойства Системы – вкладка Имя компьютера.

RUNDLL32 SHELL32, Control_RunDLL sysdm.cpl,,2 - Свойства Системы – вкладка Оборудование.

И так далее. Аналогично задаются вкладки для ”Настройки мыши” main.cpl,,0 – 2

Две запятые – это отсутствующие параметры указателя (handle) родительского процесса и его иконки, которые нужны при программном вызове библиотеки .cpl и не нужны при запуске через Rundll32.

Кроме функции Control_RunDLL, использующейся для вызова объектов .cpl, можно использовать и другие, экспортируемые библиотекой shell32.dll

runDll32.exe shell32.dll,Options_RunDLL - Параметры Проводника - Общие

runDll32.exe shell32.dll,Options_RunDLL 1 - Персонализация – Панель задач.

runDll32.exe shell32.dll,Options_RunDLL 2 - Параметры Проводника - Поиск

runDll32.exe shell32.dll,Options_RunDLL 3 - Персонализация – Пуск.

runDll32.exe shell32.dll,Options_RunDLL 4 - Персонализация – Уведомления и действия.

rundll32 shell32,OpenAs_RunDLL - Вызов окна выбора программы для открытия файла.

rundll32 shell32,ShellAboutA [Text] – Отображение окна сведений о системе с необязательной пометкой Text в кодировке ANSI

rundll32 shell32,ShellAboutW [Text] – Отображение окна сведений о системе с необязательной пометкой Text в кодировке Unicode. Функции, заканчивающиеся на A или W, отличаются только используемой кодировкой.

rundll32 SHELL32.DLL,ShellExec_RunDLL explorer.exe %TEMP% - Открыть в Проводнике каталог временных файлов.

Rundll32 Shell32.dll,SHHelpShortcuts_RunDLL Connect - Вызов окна подключения сетевого диска.

Хочу добавить, что конструкция, многократно встречающаяся на просторах Интернета

rundll32 shell32, SHExitWindowsEx 0…8 не работает, поскольку в shell32.dll современных ОС Windows такой функции нет.


Отсутствие функции в библиотеке shell32.dll.


И так же в современных ОС Windows не работают многие другие функции библиотек, описание которых вы найдете на просторах Интернета. При чем причиной может быть не только отсутствие нужной функции в библиотеке, но и изменение формата входных параметров для нее.

В целом, использование rundll32.exe в командной строке не пользуется особой популярностью, ведь большую часть функций можно выполнить гораздо проще и быстрее стандартными средствами Windows, но в командных файлах, связанных с последовательным выполнением установок, настроек, и конфигурированием системы, использование rundll32 бывает вполне оправданным и позволяет упростить работу системных администраторов.

В Windows 10 и старше для запуска настроек "Параметры" используется конструкция ms-settings:. Подробности - Запуск Параметров Windows из командной строки





Весь список команд CMD Windows