Почему важно зарегистрировать файл dll в windows?

14 ответов на вопрос “Почему важно зарегистрировать файл dll в windows?”

  1. sDemonik Ответить

    ***
    Иногда при запуске какой-либо программы появляется
    сообщение, что не найден файл *.dll (например, VCompLib.dll) или *.ocx
    (например, seon.ocx). При этом программа, естественно, не запускается.

    Сообщения
    об ошибках могут быть разные (это зависит в основном от того, на каком языке
    написана программа), например: «Component
    ‘MSCOMM32.OCX’ not correctly registered: file is missing or invalid»
    , или
    «Приложению не удалось запуститься, поскольку MSVBVM50.DLL
    не был найден. Повторная установка приложения может исправить эту проблему»
    , или
    «Runtime DLL/OCX File error». При этом в Windows Vista
    дополнительно появится окно Помощника по совместимости программ с
    сообщением Эта программа требует отсутствующий компонент
    Windows
    .
    Краткая справка
    · DLL (от англ. Dynamic-Link
    Library

    – динамически
    подключаемая библиотека)
    – понятие операционной
    системы Microsoft Windows; динамическая библиотека, позволяющая
    многократное применение различными программными приложениями. K
    DLL
    иногда причисляют
    также элементы управления ActiveX и
    драйвера. В мире UNIX аналогичные функции
    выполняют так называемые
    shared objects («разделяемые объекты»). Формат файлов
    *.dll придерживается тех же
    соглашений, что и формат исполняемых файлов *.exe, сочетая код, таблицы и ресурсы.
    · ActiveX
    – название группы
    технологий, разработанных Microsoft для программирования компонентных объектных
    приложений на основе модели COM.
    · COM (сокр. от англ. Component Object Model)
    – модель компонентных
    объектов Microsoft, стандартный
    механизм, включающий интерфейсы, с помощью которых одни объекты предоставляют
    свои сервисы другим; является
    основой многих объектных технологий, в том числе OLE и ActiveX).
    · OLE (сокр. от
    англ. Object Linking and Embedding)
    – общее название
    (до 1996 г.) группы объектно-ориентированных технологий
    Microsoft
    на основе COM (OLE 1,
    OLE
    2, OLE automation, OLE Database и др.).
    ·
    ActiveX control
    – управляющий элемент
    ActiveX; введенное в 1996 г. Microsoft новое название независимых
    программируемых компонентов, ранее называемых OLE controls, OCXs,
    OLE custom
    controls
    ; в отличие от последних позволяют работать с
    Internet.
    ·
    OCX (сокр. от англ. OLE Custom eXtension)
    – перемещаемые
    элементы управления, OLE custom control, OLE control.
    Упрощённо можно сказать,
    что файлы *.ocx
    – это элементы управления
    ActiveX, выполняющие примерно те же функции, что и файлы *.dll.
    ·
    OLE custom control
    – специализированный
    управляющий элемент OLE, OLE control.
    · OLE control
    – управляющие элементы
    OLE, программируемые компоненты-приложения с интерфейсом на базе OLE,
    позволяющим легко включать их в другие приложения; c 1996 г. называются ActiveX
    control
    . Синонимы: OCX, OLE custom control.

  2. gaudens Ответить

    Модель многокомпонентных объектов (Component Object Model — СОМ) является основным средством взаимодействия программ любых типов: библиотек, приложений, системного программного обеспечения и т.п. и определяет стандартный механизм, с помощью которого одна часть программного обеспечения ( сервер ) предоставляет свои сервисы другой ( клиент ) , что обеспечивается применением определенных протоколов взаимодействия между ними ( между клиентом и сервером). В качестве сервера может использоваться динамически подключаемая библиотека (DLL), подгружаемая во время работы приложения, либо отдельный самостоятельный процесс, который может быть компонентом прикладной или системной программы, или даже процесс, выполняющийся на другом компьютере. Для нахождения нужного клиенту сервера, используется специальная информация из реестра Windows, которая формируется в при регистрации сервера в системе, чаще всего, в виде модуля динамически загружаемой библиотеки DLL. Регистрация необходима, поскольку программы работают не с самими файлами DLL, OCX, ACX, EXE, а с объектами, представляющими определенный набор программных интерфейсов. Для регистрации DLL используется следующие разделы реестра:
    HKLM\SOFTWARE\Classes\CLSID – при регистрации COM-объектов библиотек для всех пользователей системы;
    HKCU\SOFTWARE\Classes\CLSID – при регистрации COM-объектов библиотек только лишь для текущего пользователя;
    HKLM\SOFTWARE\Wow6432Node\Classes\CLSID – для регистрации 32-битных DLL в 64-битных ОС Windows;
    При регистрации, в указанном разделе реестра создается ключ с именем, эквивалентным глобальному уникальному идентификатору GUID регистрируемого оюъекта. GUID применительно к СОМ, является идентификатором класса. Чтобы отличать идентификаторы классов от других идентификаторов, для них используют подраздел реестра с именем CLSID. GUID представляет собой 128-разядное 16-ричное значение, заключенное в фигурные скобки:
    {23170F69-40C1-278A- 1000-000100020000
    При регистрации в реестре создается подраздел с именем, соответствующим идентификатору GUID, содержащий информацию о пути и имени исполняемого файла, его версии, времени регистрации, сведения о разработчике, и прочие параметры, определяющие специфические свойства регистрируемого объекта. Удаление или повреждение данных регистрации приводит к неработоспособности зарегистрированного компонента системы или прикладной программы, что, как правило, сопровождается сообщением об ошибке поиска DLL и предложением переустановить проблемное программное обеспечение. Вместо переустановки вполне можно обойтись перерегистрацией поврежденного объекта с помощью утилиты regsvr32.exe, имеющейся во всех версиях операционных систем семейства Windows .
    Утилита regsvr32.exe является стандартной программой командной строки для регистрации и отмены регистрации элементов управления OLE, ActiveX и библиотек DLL в реестре Windows. В 64-разрядных версиях Windows присутствуют две версии файла regsv32.exe:
    – 64-разрядная версия в каталоге %systemroot%\System32 (обычно – C:\Windows\System32)
    – 32-разрядная версия в каталоге %systemroot%\SysWoW64 (обычно – C:\Windows\SysWoW64)
    Для работы утилиты требуются повышенные привилегии, поэтому окно командной строки должно вызываться с правами администратора ( ”Запуск от имени администратора”).
    При запуске regsvr32.exe без параметров командной строки, либо при запуске с неверными параметрами, отображается подсказка:

    Формат командной строки REGSVR32:
    Regsvr32 [/u] [/s] [/n] [/i[:строка_команд]] DLL-файл
    /u — – вызывает DllUnInstall, отменяет регистрацию сервера
    /i — вызывает DllInstall, передавая ей в параметре необязательную строку_команд;
    /n — не вызывает DllRegisterServer; может использоваться с ключом /I;
    /s – “тихий” режим; окна сообщений не отображаются;

    Примеры использования regsvr32.exe:

    regsvr32 /u “C:\Program Files\7-Zip\7-zip32.dll” – отменить регистрацию указанной DLL. При успешной отмене отображается сообщение:

    Для подавления вывода сообщения, используется параметр /s:
    regsvr32 /u /s “C:\Program Files\7-Zip\7-zip.dll”
    В результате выполнения данной команды, из контекстного меню Проводника Windows, вызываемого правой кнопкой мышки, исчезнет пункт архиватора 7-Zip. Для его восстановления необходимо выполнить регистрацию 7-zip.dll командой:
    regsvr32 “C:\Program Files\7-Zip\7-zip.dll”
    Необходимо не забывать о разрядности регистрируемых объектов в 64-разрядных версиях ОС. В случае необходимости регистрации 32-разрядного объекта, нужно явно указать путь для 32-битной редакции утилиты regsvr32:
    %SystemRoot%\syswow64\regsvr32.exe
    Или без использования переменных окружения:
    C:\Windows\System32\regsvr32.exe
    В качестве дополнительного программного средства для управления регистрацией объектов COM, очень удобно пользоваться бесплатной утилитой от Nirsoft RegDLLView.exe. Программа не требует установки в системе, имеет небольшой размер и позволяет:
    – Получить в удобном виде список всех зарегистрированных в системе объектов.
    – Сохранить в текстовом файле или в HTML-формате параметры всех или выделенных из списка зарегистрированных DLL.
    – Выполнить регистрацию или отмену регистрации выбранных объектов.
    – Создать reg-файл для выполнения отмены регистрации одной или нескольких DLL.
    – Зарегистрировать или перерегистрировать указанный файл.

    Кроме того, имеется возможность проверить цифровые подписи исполняемых файлов зарегистрированных объектов, просмотреть или изменить их свойства, а также выполнить запуск редактора реестра с отображением информации выбранного GUID через пункт контекстного меню ”Open in Regedit”, вызываемого правой кнопкой мышки.
    Страница с описанием RegDllView и ссылками для скачивания 32-х и 64-х разрядных версий программы.
    Весь список команд CMD Windows

  3. misuri78 Ответить

    DLL (от англ. Dynamic-Link Library – динамически подключаемая библиотека) – понятие операционной системы Microsoft Windows; динамическая библиотека, позволяющая многократное применение различными программными приложениями. K DLL иногда причисляют также элементы управления ActiveX и драйвера. В мире UNIX аналогичные функции выполняют т. н. shared objects («разделяемые объекты»). Формат файлов *.dll придерживается тех же соглашений, что и формат исполняемых файлов *.exe, сочетая код, таблицы и ресурсы.
    ActiveX – название группы технологий, разработанных Microsoft для программирования компонентных объектных приложений на основе модели COM.
    COM (сокр. от англ. Component Object Model) – модель компонентных объектов Microsoft, стандартный механизм, включающий интерфейсы, с помощью которых одни объекты предоставляют свои сервисы другим; является основой многих объектных технологий, в том числе OLE и ActiveX).
    OLE (сокр. от англ. Object Linking and Embedding) – общее название (до 1996 г.) группы объектно-ориентированных технологий Microsoft на основе COM (OLE 1, OLE 2, OLE automation, OLE Database и др.).
    ActiveX control – управляющий элемент ActiveX; введенное в 1996 г. Microsoft новое название независимых программируемых компонентов, ранее называемых OLE controls, OCXs, OLE custom controls; в отличие от последних позволяют работать с Internet.
    OCX (сокр. от англ. OLE Custom eXtension) – перемещаемые элементы управления, OLE custom control, OLE control. Упрощенно можно сказать, что файлы *.ocx – это элементы управления ActiveX, выполняющие примерно те же функции, что и файлы *.dll.
    OLE custom control – специализированный управляющий элемент OLE, OLE control.
    OLE control – управляющие элементы OLE, программируемые компоненты-приложения с интерфейсом на базе OLE, позволяющим легко включать их в другие приложения; c 1996 г. называются ActiveX control. Синонимы: OCX, OLE custom control.

  4. stalker-2014 Ответить

    Концепция динамических библиотек родилась из концепции overlay-модулей еще во времена, когда оперативная (физическая) памяти была достаточно дорога. Именно в то время родилась идея “сбрасывать” (выгружать) неиспользуемый в данный момент машинный код приложения в более дешевое внешнее хранилище данных (файл подкачки) и загружать его лишь в момент использования, что позволяло более эффективно использовать память. Дальнейшее развитие данной концепции привело к появлению динамически загружаемых библиотек (называемых упрощенно динамическими библиотеками), которые упростили архитектуру приложения, привело к решению проблемы дублирующегося кода, ведь вместо того, чтобы каждой программе использовать один и тот же код (к примеру, диалоговых окон), проще вынести его в отдельный файл (библиотеку DLL), обеспечивающий данный функционал для множества приложений, и один раз загрузив его в оперативную память, просто предоставлять тем или иным приложениям. Поэтому, характерная особенность динамической библиотеки заключается в том, что она может использоваться сразу несколькими приложениями, а система обеспечивает присутствие в памяти всего-лишь одной копии кода динамической библиотеки для всех приложений, которые содержат ссылки на функции данной библиотеки.
    Начиная с Windows XP, в зависимости от разрядности ОС, утилита regsvr32.exe располагается либо только в директории %SystemRoot%\System32 для 32-битных систем, либо в папках %SystemRoot%\System32 и %SystemRoot%\SysWOW64 для 64-битных (присутствуют две разные версии программы). Представляет собой утилиту командной строки, то есть, иными словами, работает с консолью и может использоваться в сценариях.

    Смысл регистрации библиотек и элементов управления

    По какой причине для использования функций DLL в системе непременно требуется их регистрация? Я думаю, вполне уместно будет привести аналогию с системной переменной пути (%PATH%). Как Вы помните, файлы, которые располагаются в директориях, указанных в переменной %PATH%, можно запускать из командной строки без указания полного пути к файлу, в противном случае их невозможно будет запустить из произвольной директории системы, командный интерпретатор их попросту не найдет. По аналогии и библиотеки, которые содержат функции, широко используемые различными программами, должны быть “объявлены” в системе, иначе программы не смогут их найти. Можно утверждать, что при вызове функции из образа исполняемого файла, загрузчик Windows (менеджер, который отвечает за выделение памяти, подключение различных функций из образов памяти и прч.) должен знать откуда можно подгрузить библиотеку, содержащую требуемую функцию.
    Но что такое регистрация в системе применительно к библиотеке DLL? Это определенный алгоритм действий по модификации различных разделов реестра и каталогов файловой системы, результатом которого является “видимость” библиотеки приложениями. Если библиотека “сторонняя” (не системная), то регистрация библиотеки выполняется на этапе инсталляции приложения, для обслуживания функций которого она предназначается. В большинстве случаев сам процесс регистрации библиотеки выполняется при помощью вызова внешних специализированных системных утилит, либо определенной последовательности специализированных функций Windows API.

  5. reshet 1975 Ответить

    ***

    Как зарегистрировать файлы *.dll

    Регистрация файлов *.dll
    производится с помощью сервера регистрации regsvr32.exe (дисковый
    адрес которого – \Windows\System32).
    Рассмотрим способы регистрации:
    1. Нажмите кнопку Пуск;
    – в текстовое поле Найти программы и
    файлы
    введите
    regsvr32 имя_файла –>
    Enter
    .
    2. Нажмите кнопку Пуск;
    – в текстовое поле Найти программы и
    файлы
    введите cmd;
    – в появившемся перечне (под заголовком
    Программы
    ) нажмите правой кнопкой
    мыши cmd.exe;
    – из контекстного меню выберите Запуск
    от имени администратора
    ;
    – введите пароль, если появится
    соответствующий запрос;
    – в открывшемся окне
    Интерпретатора команд
    Windows
    после приглашения системы введите
    regsvr32 имя_файл
    ,
    нажмите Enter.
    3. Если вы пользуетесь файловым менеджером
    Total Commander, то можно выполнить регистрацию файлов *.dll
    с помощью командной строки Total Commander.
    Если регистрация файлов *.dll прошла
    успешно, появится окно
    RegSvr32
    с соответствующим сообщением, например: «Успешное выполнение DllRegisterServer в C:\WINDOWS\system32\msvbvm50.dll»:

    Примечания
    1.
    При регистрации файлов *.dll
    происходит их запись в Реестр Windows. При этом в ветке
    [HKEY_LOCAL_MACHINE\SOFTWARE

    \Microsoft\Windows\CurrentVersion\SharedDLLs]
    создается соответствующий параметр REG_DWORD со значением 1.
    2. Использование команды regsvr32:
    regsvr32 [/u] [/s] [/n] [/i[:строка_команд]]
    DLL-файл

    /u – отменяет регистрацию DLL;
    /s – «тихий» режим – окна сообщений
    не отображаются;
    /i – вызывает DllInstall,
    передавая параметром необязательную строку_команд, при использовании с
    ключом /u вызывает DLLUnInstall;
    /n – не вызывает
    DllRegisterServer
    ; это может использоваться с ключом /i.

    Валерий Сидоров

Добавить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *