Как запустить программу dll

Содержание

Файл DLL – компонент динамически подключаемой библиотеки, чьи элементы используют практически все программы. Библиотека DLL файлов расположена в корневой папке системы. Компоненты должны быть все в наличии, иметь цифровую подпись, правильно работать и быть актуальными по версии. Если одно из требований не соблюдено, при запуске программы пользователь получит информационное уведомление: ошибка DLL. Неисправность свидетельствует о том, что отсутствует DLL файл, поврежден или устарел.

Как установить DLL файл

Чтобы программы, приложения и игры снова начали работать, необходимо установить вручную недостающие компоненты библиотеки. Просто поместить файл в папку недостаточно ─ нужно знать как их зарегистрировать.

Помещение и регистрация файлов библиотеки

Перед тем как установить DLL файл на Windows 7,8,10, их нужно скачать, причем точно под разрядность системы.

Давайте определим, какая разрядность у Вашей системы (если вы точно знаете, может пропустить этот шаг)

Не запускается игра Error «Исправлении ошибки — Отсутствует XINPUT1_4.DLL

Шаг 1. Кликаем правой кнопкой мыши по «Мой компьютер» и выбираем «Свойства»

svoistva

Шаг 2. В открывшемся окне, мы может прочитать свойства компьютера, версию операционной системы и её разрядность 32 (х86) или 64 бит. В нашем случаи стоит 64-разрядная операционная система Windows 10.

64

·

Шаг 3. После скачивания файлов их нужно поместить в корневую папку, зарегистрировать

для х32 (х86) систем компонент необходимо заменить или поместить в папку C:WindowsSystem32;

для х64 необходимо выполнить замену или переместить в папку C:Windows SysWOW64;

Шаг 4. Файл нужно зарегистрировать в системе.

Сделать это можно, открыв командную строку комбинацией «Win» + «R», или нажать «Пуск» и «Выполнить»;

в открывшемся окне ввести через пробел следующее: regsvr32 имя файла.dll – где, «regsvr32» ─ команда для регистрации, а «имя файла.dll» – полное имя вставленного компонента;

msvcp110.dll 0

msvcp110.dll 1

Шаг 5. Нажмите «ОК», и перезагрузите компьютер, и новые параметры вступят в силу.

Сразу хочется отметить, что при регистрации возможны появления ошибок. Например: «Не удалось загрузить модуль». Обычно они возникают по 3 причинам

Второй способ регистрации

Шаг 1. Зарегистрировать файл можно с помощью командой строки, которую нужно запустить от имени администратора.

Шаг 2. Пишем команду regsvr32.exe + путь к файлу и жмём «Enter»

cmd

Шаг 3. Появится сообщение что «Всё прошло удачно», и просто перезагружаем компьютер

Вот и всё, файл зарегистрирован, можете пробовать запускать вашу игру или программу

А вот, некоторые советы, которые могут вам пригодиться.

Ошибка DLL на компьютере? Как Исправить Ошибку DLL При запуске программ и игр

Установка и регистрация библиотек DLL в Windows

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

Пошаговая инструкция:

system32 folder min 1

Как и куда копировать DLL файл

Ошибки с динамическими библиотеками DLL возникают по разным причинам: файл поврежден, несовместим с Windows или конкретной программой, заражен вирусами или удален. Решение всегда одно: загрузить корректную и полную версию библиотеки, после чего зарегистрировать файл в системе через командную строку. Обычно, весь процесс занимает не более 2-5 минут.

Сюда можно поместить (разархивировать и копировать) любые библиотеки dll, и установленные файлы будут работать:

Где можно загрузить нужную библиотеку:

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

Все изменения вступят в силу после регистрации библиотеки в системе и перезагрузки компьютера. До этого пытаться запустить что-либо бесполезно — система не подключится к файлу.

Для проверки разрядности системы нужно нажать правой кнопкой мыши на иконке «Мой компьютер» и выбрать пункт «Свойства». В открывшейся папке в разделе Система будет написано: «Тип системы: 64-разрядная операционная система, процессор x64».

system type 64bit min

Регистрация библиотеки в Windows

Для регистрации библиотеки нужно написать команду regsvr32 имяфайла.dll и нажать Enter. К примеру, regsvr32.exe msvcp110.dll.

cmd dll registration min

Для того, чтобы изменения вступили в силу и библиотека начала работать, необходимо перезагрузить компьютер. Если Windows не хочет находить требуемый файл, можно указать полный путь: regsvr32.exe полный_путь_к_файлу.dll, например regsvr32.exe C:/Windows/System32/msvcp110.dll.

Как запустить файл с расширением dll?

Как запустить файл DLL?

Как просмотреть содержимое dll файла?

Как открыть DLL файлы для изменения?

Открытие DLL-файлов для редактирования

Как открыть файл DLL в Windows 10?

Поэтому, чтобы их открыть на том же windows10 понадобится соответствующее ПО от МС — Visual Studio или VisualFoxPro. Также «длл» должен открываться программой, использующей его библиотеку.

Где находятся все dll файлы?

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

Как зарегистрировать DLL в Windows 10 x64?

И последний способ, который также может пригодиться в некоторых случаях:

Как переписать DLL?

Часть 2 из 2: Как отредактировать DLL-файл с помощью программы Hex Editor

Чем можно редактировать exe файл?

Программы для редактирования EXE файлов на компьютере

Как открыть файл с расширением EXE?

Как открыть библиотеку в Windows 10?

В Windows 10 тоже имеется Библиотека, но по умолчанию она скрыта. Чтобы ее отобразить, на ленте Проводника следует переключиться на вкладку «Вид», нажать на иконку «Навигация» и выбрать в меню «Показать библиотеки». В панели переходов Проводника отображается четыре папки библиотеки, а вообще их больше.

Настройка оборудования

Блог о модемах, роутерах и gpon ont терминалах.

header

Как зарегистрировать библиотеку dll в Windows 10

Одним из важнейших элементов Windows 10 являются файлы динамических библиотек с расширением DLL (Dynamic Link Library). Они могут использоваться как компонентами самой системы, так и сторонними программами и играми для работы с процессором, памятью и прочими устройствами компьютера.

Читайте также:
Программа есть такая профессия

Один и тот же модуль динамической библиотеки иложет использоваться одновременно несколькими приложениями сразу. Яркий пример — DirectX. Как правило все подобные инструменты ставятся пакетно, распаковывая в системную папку сразу все необходимые элементы и модули. Но иногда бывают случаи, когда необходимой библиотеки нет или используется неактуальная версия.

Тогда необходимо скачать в Интернете нужный файл, а затем зарегистрировать библиотеку DLL в Windows, чтобы система смогла с ним работать. Как это сделать я сейчас подробно расскажу.

Куда устанавливать DLL-файлы

Итак, Вы скачали из Интернета нужный модуль, распаковали из архива и теперь возникает совершенно логичный вопрос — а куда кидать DLL в систему?! Во первых, сначала надо определить разрядность системы, так как в 32-битной для этой цели используется одна папка, а в 64-битной — другая. Делается это очень легко. Кликаем правой кнопкой на значке «Этот компьютер» на рабочем столе и в меню выбираем пункт «Свойства». В появившемся окне находим строчку «Тип системы» и смотрим что там написано:

То же самое можно посмотреть и через командную строку, введя команду systeminfo. Она выведет всю информацию о установленной ОС Виндовс, и в строке «Тип системы» будет указана её разрядность.

Ну а дальше всё просто:

Вот именно сюда и надо устанавить ДЛЛ-файл. Здесь %windir% — это переменная окружения, указывающая путь к системной директории, в которой располагаются все важные компоненты Виндовс.
Проще говоря, если операционная система установлена на диске С:, то путь к нужным папкам будет C:WindowsSystem32 для 32-разрядной и C:WindowsSysWOW64 для 64-разрядной.

Регистрация DLL в Windows

Теперь самое интересное — как зарегистрировать библиотеку dll в Windows. Нажимаем кнопку Пуск правой кнопкой мыши и выбираем в контекстном меню пункт «Выполнить»:

Того же самого эффекта можно достигнуть нажав комбинацию клавиш WIN+R. Повявится вот такое окно «Выполнить»:

В строку «Открыть» надо ввести вот такую команду:

В качестве примера давайте зарегистрируем библиотеку runtime.dll для 32-хбитной версии Windows 10. команда будет такой:

Нажимаем на кнопку «ОК» и ждём что нам ответит система. Если всё правильно — она просто «съест» файл. Но случается и ошибки. Вот самая распространённая:

Связана она либо с ошибкой в пути или имени файла, либо с неправильно выбранной папкой, в которую была скопирована ДЛЛ-ка для регистрации. Стоит ещё раз всё тщательно проверить.

Помогло? Посоветуйте друзьям!

Как зарегистрировать библиотеку dll в Windows 10 : 11 комментариев

Ну хорошо! А почему для 64 битной не написали пример пути регистрации? Вот куда закинуть написали, а как зарегистрировать только для 32.

Так подставляйте папку в пример и всё. Проще некуда.

неплохо бы напомнить, что и resvr32.exe существует в 2-х экземплярах (разной разрядности).
и что dll-ки бывают разной разрядности! и что 64-х битную dll в 64-х битной винде надо кидать в system32, а не в syswow64

На самом деле не то чтобы пробовал — по роду деятельности приходится достаточно часто разные самописные библиотеки регистрировать. И как бы без проблем. Написал, скомпилировал, подключил.

»
Для Windows 10 x32: %windir%system32
Для Windows 10 x64: %windir%SysWOW64
»
Всё ровно наоборот!

Игорь, Вы путаете. Дело в том, что в 32-х разрязной Windows динамические библиотеки лежат как раз в папке system32. В 64х разрядной библиотеки 64х программ лежат в System32, а 32х разрядных приложений в sysWOW64. Потому в 90% случаев и нужно в Windows 10 x64 класть библиотеки в папку sysWOW64. Надеюсь, что понятно объяснил.

Модуль «CWindowsSysWOW64task_force_radio_win64.dll» загружен,но точка входа DllRegisterServer не найдена.
Проверьте, что «C:WindowsSysWOW64task_force_radio_win64.dll» является правильным файлом DLL или OCX и повторите попытку.

Если не хватает прав в системе, то может помочь:
rpg-club.com/files/reg_msxml_user_gui.exe

Изначально для игры сделано
Но помогает и с другими OCX( dll )
Регистрирует в пользовательский отдел реестра, в 10ке помогает, во всяком случае для l2 и msxml4 точно

А почему regsvr используете? В инструкции же написано regsvr32!

Файл формата DLL: чем открыть, описание, особенности

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

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

Файлы с расширением DLL – что это и для чего нужны

Файлы DLL – это динамически подключаемые библиотеки. Установленная в операционную систему программа может не иметь в своем составе всех нужных для работы данных, а использовать те, которые уже присутствуют в ОС. За счет этого также достигается экономия памяти – работающие программы используют одни и те же DLL.

Если же программа (или библиотека) будет повреждена, то это не скажется на работоспособности остального ПО.

Когда и как появились

Библиотеки DLL появились одновременно с ОС Windows. Разработчики предполагали, что это облегчит программирование приложений и поможет упорядочить использование общих ресурсов в течение сеанса работы.

Но со временем выяснилось, что в ряде случаев возникает тупиковая ситуация, которая получила название «DLL hell». Такое случалось, когда два или более приложений требуют доступа к разным (и не совместимым друг с другом) библиотекам. В результате Windows начинала работать нестабильно.

Только в последних версиях ОС удалось создать механизм, предотвращающий возникновения сбоев – технологию Side-by-side assembly, который испытали в XP, но окончательно он стал применяться в Windows Vista.

Программный код ОС Windows – проприетарный. Это значит, что разработчики не предусмотрели штатных средств, применяя которые, пользователь сможет менять системный код. Для открытия DLL придется использовать специальные программные пакеты. А подключать имеющиеся DLL к разрабатываемой программе можно с применением ПО Microsoft.

В Windows 10

Пользователи, работающие в десятой версии Windows, не всегда знают, чем открыть DLL. Для подключения библиотеки к проекту понадобится либо Visual Studio, либо VisualFoxPro. Эти программные комплексы доступны для скачивания на официальном портале компании Microsoft. Для редактирования допускается использовать ResourceHacker – утилиту для ознакомления и редактирования различных типов файлов.

Чтобы открыть динамически подключаемую библиотеку, следует нажать в главном меню:

Из чего состоит рабочая область программы ResHacker:

В Windows 7

Проблема – чем открыть DLL для редактирования в операционной системе Windows 7 решается так же как и для 10 версии. Еще применяется утилита Resource Tuner – редактор ресурсов. Она дает возможность менять код в DLL на свое усмотрение и сохранять библиотеки.

В онлайн-сервисах

Это понадобится, если речь идет о страницах сайта. В DLL содержатся скрипты, которые отвечают за корректную работу сервера.

Открыть библиотеки можно, используя браузеры:

Как открыть DLL, используя Visual Studio

Программная среда Visual Studio дает возможность создавать, подключать DLL к текущему проекту и редактировать его. Для этого используется синтаксис языка программирования.

Особенности работы с DLL файлами и возможные проблемы

Некоторые DLL не удастся не только изменить, но даже открыть. Это происходит с защищенными библиотеками и проблема не решается без специальных программ для взлома.

Читайте также:
Учебные программы для компьютера это

Пользователи также сталкиваются с отсутствием библиотек, необходимых для работы некоторых программ. ОС при этом выдает сообщение о том, что «файл не найден». Для устранения неисправности требуется отыскать недостающие DLL с помощью поисковых систем и скачать. Затем – поместить в требуемую папку.

В редких случаях библиотеки DLL придется зарегистрировать в ОС:

В качестве итога

Работой с DLL занимаются программисты, но опытным пользователям также полезно будет знать основы работы с динамически подключаемыми библиотеками. Это может пригодиться для изменения или извлечения данных из файлов прикладных программ.

Источник: windorez.ru

Отладка библиотек DLL в Visual Studio (C#, C++, Visual Basic, F#)

Область применения:yesVisual StudionoVisual Studio для Mac noVisual Studio Code

Библиотека DLL (библиотека динамической компоновки) — это библиотека, содержащая код и данные, которые могут использоваться несколькими приложениями. Visual Studio можно использовать для создания, сборки, настройки и отладки библиотек DLL.

Создание библиотеки DLL

Создавать библиотеки DLL можно с помощью следующих шаблонов проектов Visual Studio.

  • Библиотека классов C#, Visual Basic или F#
  • Библиотека элементов управления Windows Forms (WCF) C# или Visual Basic
  • Библиотека динамической компоновки (DLL) C++

Дополнительные сведения см. в разделе Методы отладки MFC.

Отладка библиотеки WCF аналогична отладке библиотеки классов. Дополнительные сведения см. в статье Элементы управления Windows Forms.

Обычно библиотека DLL вызывается из другого проекта. При отладке вызывающего проекта в зависимости от конфигурации библиотеки DLL можно выполнить шаг с заходом и отладить код библиотеки DLL.

Конфигурация отладки библиотеки DLL

Когда вы используете шаблон проекта Visual Studio для создания приложения, Visual Studio автоматически создает требуемые параметры для конфигураций сборки отладки и выпуска. При необходимости эти параметры можно изменить. Дополнительные сведения см. в следующих статьях:

  • Параметры проекта для конфигурации отладки C++
  • Параметры проекта для конфигураций отладки C# на .NET
  • Параметры проекта для конфигураций отладки C#
  • Параметры проекта для конфигурации отладки Visual Basic
  • Практическое руководство. Конфигурации отладки и выпуска

Установка DebuggableAttribute C++

Чтобы отладчик мог присоединиться к библиотеке DLL C++, код C++ должен добавлять DebuggableAttribute .

Установка DebuggableAttribute

  1. В обозревателе решений выберите проект DLL C++ и щелкните значок Свойства либо щелкните проект правой кнопкой мыши и выберите пункт Свойства.
  2. В области Свойства в разделе Компоновщик>Отладка выберите Да (/ASSEMBLYDEBUG) для свойства Отлаживаемая сборка.

Дополнительные сведения см. в статье /ASSEMBLYDEBUG.

Задание расположений файлов DLL C/C++

Для отладки внешней библиотеки DLL вызывающий проект должен находить библиотеку DLL, ее PDB-файл и любые другие файлы, необходимые библиотеке DLL. Вы можете создать пользовательскую задачу сборки, чтобы скопировать эти файлы в выходную папку проекта Debug, или скопировать файлы вручную.

Для проектов C/C++ можно задать расположения файлов заголовков и LIBD-файла на страницах свойств проекта, а не копировать их в выходную папку.

Задание расположений файла заголовка C/C и LIB-файла

  1. В обозревателе решений выберите проект DLL C/C++ и щелкните значок Свойства либо щелкните проект правой кнопкой мыши и выберите пункт Свойства.
  2. В верхней части области Свойства в разделе Конфигурация выберите Все конфигурации.
  3. В разделе C/C++>Общие>Дополнительные включаемые каталоги укажите папку с файлами заголовков.
  4. В разделе Компоновщик>Общие>Дополнительные каталоги библиотек укажите папку с LIB-файлами.
  5. В разделе Компоновщик>Ввод>Дополнительные зависимости укажите полный путь и имя файла для LIB-файлов.
  6. Нажмите кнопку ОК.

Дополнительные сведения о параметрах проекта C++ см. в статье Справочник C++ по страницам свойств проекта Windows.

Сборка отладочной версии

Перед началом отладки обязательно создайте отладочную версию библиотеки DLL. Для отладки библиотеки DLL вызывающее приложение должно находить PDB-файл и любые другие файлы, необходимые библиотеке DLL.

Вы можете создать пользовательскую задачу сборки, чтобы скопировать эти файлы DLL в выходную папку проекта Debug, или скопировать файлы вручную.

Обязательно вызовите библиотеку DLL в правильном расположении. Это может показаться очевидным, но, если вызывающее приложение находит и загружает другую копию библиотеки DLL, отладчик никогда не достигнет заданных точек останова.

Отладка библиотека DLL

Библиотеку DLL нельзя запускать напрямую. Ее должно вызывать приложение, обычно это EXE-файл. Дополнительные сведения см. в статье Проекты Visual Studio — C++.

Чтобы отладить библиотеку DLL, можно начать отладку из вызывающего приложения или выполнить отладку из проекта DLL, указав вызывающее приложение. Можно также использовать окно «Интерпретация» отладчика для вычисления функций или методов DLL во время разработки без использования вызывающего приложения.

Дополнительные сведения см. в статье Первое знакомство с отладчиком.

Запуск отладки из вызывающего приложения

Вызывать библиотеку DLL могут следующие виды приложений.

  • Приложение из проекта Visual Studio в том же или другом решении из библиотеки DLL.
  • Существующее приложение, которое уже развернуто и работает на тестовом или рабочем компьютере.
  • Программа расположена в Интернете и доступна по URL–адресу.
  • Веб-приложение с веб-страницей, которая внедряет библиотеку DLL.

Выполнить отладку библиотеки DLL из вызывающего приложения можно следующими способами.

  • Откройте проект для вызывающего приложения и начните отладку, выбрав Отладка>Начать отладку или нажав клавишу F5. or
  • Выполните присоединение к приложению, которое уже развернуто и работает на тестовом или рабочем компьютере. Используйте этот вариант для библиотек DLL на веб-сайтах или в веб-приложениях. Дополнительные сведения см. в разделе Практическое руководство. Присоединение к выполняемому процессу.

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

Во время отладки в окне Модули можно проверить библиотеки DLL и EXE-файлы, загружаемые приложением. Чтобы открыть окно Модули, во время отладки выберите Отладка>Окна>Модули. Дополнительные сведения см. в разделе Практическое руководство. использовать окно модулей.

Использование окна «Интерпретация»

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

Окно Интерпретация можно использовать во время разработки с большинством типов проектов. Оно не поддерживается для SQL, веб-проектов или скриптов.

Например, чтобы протестировать метод с именем Test в классе Class1 , выполните следующие действия.

  1. Откройте проект DLL, откройте окно Интерпретация, последовательно выбрав пункты Отладка>Окна>Интерпретация или нажав сочетание клавиш CTRL+ALT+I.
  2. Создайте объект типа Class1 , введя следующий код C# в окне Интерпретация и нажав клавишу ВВОД. Этот управляемый код работает для C# и Visual Basic с соответствующими изменениями синтаксиса.

Class1 obj = new Class1();
?obj.Test(10);

Отладка в смешанном режиме

Вы можете написать вызывающее приложение для библиотеки DLL в управляемом или машинном коде. Если собственное приложение вызывает управляемую библиотеку DLL и вы хотите выполнить отладку этих двух объектов, можно включить управляемые и машинные отладчики в свойствах проекта.

Точный способ выполнения этой операции зависит от того, откуда будет начата отладка: из проекта DLL или из проекта вызывающего приложения. Дополнительные сведения см. в разделе Практическое руководство. Отладка в смешанном режиме.

Можно выполнить отладку собственной библиотеки DLL из управляемого вызывающего проекта. Дополнительные сведения см. в статье об отладке управляемого и машинного кода.

См. также

  • Отладка управляемого кода
  • Подготовка к отладке проектов C++
  • Типы проектов C#, F# и Visual Basic
  • Параметры проекта для конфигурации отладки C++
  • Параметры проекта для конфигураций отладки C# на .NET
  • Параметры проекта для конфигураций отладки C#
  • Параметры проекта для конфигурации отладки Visual Basic
  • Безопасность отладчика
Читайте также:
Топ программ для чтения манги

Источник: learn.microsoft.com

RunDll32 — вызов функций библиотек DLL

RSS

Все мы прекрасно знаем, что в операционной системе Windows существуют функции/процедуры, размещаемые внутри динамических библиотек (DLL). Эта особенность является одним из основных отличительных черт современных операционных систем, и Windows тут не исключение.

Динамическая библиотека (DLL) — файл, содержащий исполняемый код (сгруппированный в процедуры/функции) либо данные-ресурсы (шрифты/иконки/иные графические примитивы). Фактически библиотека представляет собой способ разделения общего кода между многими приложениями системы.

Но у библиотек имеется одна характерная особенность: они не запускаются через привычные пользователям механизмы, применимые к исполняемым образам .exe (например, запуск двойным щелчком из проводника), вместо этого процедуры/функции/ресурсы библиотеки доступны для использования исключительно из кода приложений. Одним словом просто так вот щелкнуть в проводнике по .DLL-файлу и запустить его не получится. И все же, у специалиста/пользователя время от времени возникает необходимость воспользоваться функциями той или иной библиотеки, в этом случае имеется два основных пути:

  • Написать собственное приложение, которое будет использовать требуемые функции [той или иной библиотеки];
  • Воспользоваться специализированным средством (утилитой) командной строки rundll32.exe;

Очевидно, что в рамках данной заметки нам интересен именно второй подход. Для его реализации разработчики из MS создали своеобразный «стартер», который вызывает код [заданной] функции (процедуры), размещаемой в одной из доступных в системе библиотек, прямо из командной строки. Идея была реализована Microsoft в виде утилиты под названием rundll32.exe.
RunDll32 — [системная] утилита командной строки, разработанная для загрузки и запуска функций из 32/64-битных библиотек DLL. Тем не менее, ошибочно было бы считать, что утилита rundll32 является средством для «запуска DLL» по аналогии с исполняемым приложением, в действительности же невозможно «запустить DLL», поскольку это не исполняемый образ в классическом понимании (вроде .EXE-образов).

rundll32 позволяет получить доступ только к функциям/процедурам, которые были описаны надлежащим (определенным) образом: вызываемые функции должны быть экспортируемыми и должны удовлетворять специфичным требованиям к определению входных параметров. Функции библиотек, которые не подпадают по описанные требования, «запускаться» посредством rundll32 не будут.

Теоретически rundll32 может использоваться для запуска функций из любых типов файлов, по структуре идентичных с библиотеками DLL: элементов ActiveX (* .ocx ), апплетов панели управления (* .cpl ), драйверов (* .drv ). Бытует мнение, что когда-то функциональные особенности rundll32 были неявными, то есть «скрытыми» от пользователя системы, но при этом самой системой активно эксплуатирующимися. Не совсем понятное утверждение, поскольку у разработчиков никогда и не существовало проблем в том, чтобы набросать алгоритм запуска произвольных функций библиотек и выделить его в отдельный функционал, к тому же в Windows это основа основ. Со временем утилита rundll32 превратилась в достаточно продвинутое средство, и в определенный момент, по причине того, что программа предоставляла возможности общего характера, разработчики решили включить её в базовый комплект ОС в виде отдельной утилиты. В состав Microsoft Windows 95, Windows 98 и Windows Millennium входили программы rundll.exe и rundll32.exe , а в операционных системах Microsoft Windows NT 4.0, Windows 2000 и Windows XP, в сборку была включена единственная утилита с именем rundll32.exe .

Стоит обратить внимание на то, что в Windows Vista/7 и более поздних ОС, утилита rundll32 не рекомендуется к использованию и включена только лишь с целью сохранения совместимости со старыми сценариями/приложениями.

Причина подобного отношения кроется в многочисленных проблемах, связанных с использованием rundll32 в своих программных окружениях. Как же без rundll32, спросите Вы? Оказывается, Microsoft активно внедряет специализированные системные утилиты, которые постепенно заменяют функционал полюбившегося многим программного средства. Поэтому, время от времени в процессах Windows 7 можно таки встретить процесс rundll32 , однако встречается подобное явление всё реже и реже.

Утилита всегда размещается в каталоге %SystemRoot%System32 для 32-битных версий Windows 2000/XP/Vista/7+ и в каталогах %SystemRoot%System32 и %SystemRoot%SysWOW64 для 64-битных версий Windows Vista/7+. В случае обнаружения файла с именем rundll32.exe в любом другом каталоге, настоятельно рекомендуется удалить файл и просканировать станцию на наличие вирусов.

Алгоритм работы rundll32

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

  1. Вызывается функция LoadLibrary , которая загружает выбранную DLL;
  2. Вызывается функция GetProcAddress , для получения адреса точки входа вызываемой из библиотеки функции;
  3. Вызывается проверка соответствия функции специфическим требованиям;
  4. Вызывается сама функция и ей передаются входные параметры;
  5. Происходит выход из функции по завершению её работы;
  6. Библиотека DLL выгружается из памяти процесса.

Как увидеть полный путь запуска rundll32

Если в системе ни с того ни с сего вдруг удалось обнаружить запущенный процесс rundll32 , и вам стало интересно, а какой же, собственно, функционал утилита выполняет, то можно определить это по полному пути запуска утилиты rundll32 . Посмотреть полный путь запуска, то есть параметры командной строки можно при помощи системной утилиты Диспетчер задач Windows (Task Manager).
Вызовите «Диспетчер задач» ( Ctrl + Shift + Esc ), перейдите в меню «Вид», выберите пункт «Выбрать столбцы..» и пролистав список вниз, найдите пункт «Командная строка» и отметьте его чекбокс, затем нажмите ОК . Результатом будет появление в главном окне диспетчера задач в параметре «командная строка» полной строки запуска rundll32.

Командная строка rundll32

32-битные и 64-битные версии программы

В 64-битных версиях ОС семейства Windows присутствуют 2 варианта программы rundll32.exe :

  • 64-битная версия, расположенная в %SystemRoot%System32 ;
  • 32-битная версия, расположенная в %SystemRoot%SysWOW64 .

В 64-битной ОС, для загрузки 64-битной библиотеки DLL может быть использована 64-битная версия rundll32.exe , находящаяся в директории %SystemRoot%System32 . Напротив, 32-битные программы в 64-битной ОС, обращающиеся к %SystemRoot%System32 , в целях обеспечения совместимости будут перенаправлены в %SystemRoot%SysWOW64 и, соответственно, будут использовать уже 32-битную версию rundll32.exe .

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

Для запуска программы rundll32 используется синтаксис командной строки следующего вида:

В качестве примера предлагаю разобрать команду запуска апплета «Язык и региональные стандарты» панели управления, вкладка «Форматы»:

rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0

При выполнении данной команды утилита rundll32 вызовет функцию Control_RunDLL , находящуюся в библиотеке shell32.dll , и передаст ей следующие параметры:

Параметр Описание
hWnd Идентификатор (дескриптор) родительского окна, который обычно используется при создании окон в функциях загружаемой библиотеки DLL.
hInstance Дескриптор (заголовок экземпляра) выбранной библиотеки DLL. Иначе, стартовый адрес процесса DLL в адресном пространстве. В нашем случае — библиотеки shell32.dll .
lpCmdLine Командная строка, передаваемая библиотеке. То есть параметры, передаваемые самой библиотеке. В нашем случае intl.cpl,,0 ;
nCmdShow Режим отображения окон выбранной библиотеки. (данные, передаваемые функции CreateProcess ).

Теперь давайте отметим и некоторые требования к синтаксису rundll32 :

  • Параметр, описывающий точку входа вызываемой функции (метка EntryPoint ) чувствителен к регистру. Это означает, что значение Control_RunDLL не тоже самое что control_rundll . Довольно часто неправильное указание регистра символов вызываемой функции приводит к ошибкам отказа в обнаружении последних.
  • Функция (в приведенном выше примере — функция Control_RunDLL ) должна самостоятельно выполнять анализ командной строки и идентифицировать отдельные ее аргументы.
  • Утилиты rundll / rundll32 ищут указанную библиотеку DLL в стандартных местоположениях.

В 64-разрядных версиях Windows (начиная с Vista) системные библиотеки размещаются в трёх каталогах: %WinDir%System32 , %WinDir%SysWOW64 и %WinDir%WinSxS . Причем последний используется компонентной моделью (Side-by-Side).

Правила создания функций

Очевидно, что в создаваемую нами собственную библиотеку DLL необходимо поместить функцию со следующими входными параметрами (пример описания на Ассемблере):

Источник: datadump.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru