Точка входа dllregisterserver не найдена windows 10

Точка входа dllregisterserver не найдена windows 10

Ваш IT помощник

Операционная система Windows при установке ее на компьютер может становиться не совсем корректно. Последствиями таких ошибок в Windows 7/8/10 становятся выскакивающие уведомления от RegSvr32, указывающие что модуль загружен, а точка входа dllregisterserver не найдена. Также возможны ошибки «не удалось выполнить вызов dllregisterserver«, сопровождающиеся кодами ошибок (0x80004005, 0x80070005, 0x8002801c, 0x80020009 и другие). Они появляются при попытках запуска любых приложений, а также игр. Точка входа не может быть найдена данной программой по причине отсутствия библиотек или их регистрации. Если сказать проще: ярлык на рабочем столе находится вне зависимости от своего утилита, поэтому его активация не происходит.

Суть ошибки библиотеки

Windows (7/8/10) для образования связей с отдельными от нее программами применяет файлы .dll. Эти библиотеки содержат все необходимые коды. Если эти коды отсутствуют или прописаны неверно, то пользователю выдается сообщение «Точка входа dllregisterserver не найдена».

Рассмотрим некоторые первоисточники проблемы, ведь помимо некорректной установки операционной системы существует еще несколько причин:

  1. Многие программы шпионы провоцируют сбой библиотек. Вирусы иногда целенаправленно удаляют файлы dll. Стоит непременно проверить все основные диски на компьютере.
  2. Если точка входа невозможна лишь на одной программе, тогда вам попался некачественный софт. Библиотека попросту отсутствует. Может это вина разработчиков, хотя все сборки из интернета в основном делаются подпольно. Игра будет устанавливаться нормально, но без dll, пути к ней закрыты.
  • Очевидным остается вариант в виде скачивания программы из другого источника. Пробуйте сначала прочитать комментарии пользователей, их мнения о софте бывают полезными.
  • Как вариант можно попробовать скачать дополнительные установочные файлы. Иногда к утилитам прилаживают дополнения — патчи, моды. Это как с DirectX. Только установив последнюю версию, все заработает как надо. Убедитесь, все ли патчи были скачаны.
  1. Другие причины точно неизвестны, но ОС может и просто перестать находить библиотеки.

Как исправить ошибку dllregisterserver?

В основном, все решение сводится к скачиванию и регистрации в RegSvr32 отсутствующей библиотеки (она указана в окошке с сообщением).

Первый способ добавления — Прибегнем к помощи командной строки.

  1. Для ее вызова перейдите в «Пуск» и «Все программы».
  2. Пролистайте все до самого низа, именно тут находится папка «Стандартные».
  3. Теперь находите и кликаете по «Командной строке».
  4. Откроется черное окно. В него следует внести regsvr32.exe и указать путь к скачанным библиотекам на вашем компьютере. Жмем Enter.

Ввод регистрации RegSvr32 через командную строку

Второй способ добавления — наиболее простой. Все что нужно — это вызвать путеводитель «Выполнить».

  1. Жмем клавишу с нарисованным логотипом Windows и зажимаем R — Win+R.
  2. Появится новое окно. Прописываем regsvr32 и путь к библиотекам. ОК.

Регистрация библиотеки в RegSvr32 через меню Выполнить

Настоятельно советуем ознакомится с рекомендациями от Microsoft по вопросу регистрации RegSvr32 в Windows и подробному порядку действий, так как существуют некоторые нюансы, связанные с разрядностью системы (x32, x64).

Напоследок следует напомнить – никогда не качайте модули библиотеки .dll из неофициального сайта. Под их видом часто распространяют вирусы. В лучшем варианте они просто могут не подходить. Всегда проверяйте источники на качественный контент и знакомьтесь с комментариями.

Пользователи спрашивают о том, как зарегистрировать dll файл в Windows 7 и 8. Обычно после того, как столкнулись с ошибками наподобие «Запуск программы невозможен, так как нужная dll отсутствует на компьютере». Об этом и поговорим.

На самом деле, регистрация библиотеки в системе не такая уж и сложная задача (покажу целых три вариации одного способа) — по сути, необходим лишь один шаг. Единственное обязательное требование — наличие у вас прав администратора Windows.

Однако есть некоторые нюансы — например, даже успешная регистрация DLL не обязательно избавляет вас от ошибки «библиотека отсутствует на компьютере», а появление ошибки RegSvr32 с сообщением о том, что модуль не совместим с версией Windows на этом компьютере или точка входа DLLRegisterServer не найдена, не говорит о том, что вы что-то делаете не так (о чем это говорит разъясню в конце статьи).

Три способа регистрации DLL в ОС

Описывая дальнейшие шаги, я исхожу из того, что вы нашли, куда нужно скопировать вашу библиотеку и DLL уже лежит в папку System32 или SysWOW64 (а возможно, где-то еще, если ей там следует находиться).

Примечание: ниже будет описано, как зарегистрировать DLL библиотеку с помощью regsvr32.exe, однако обращаю ваше внимание на то, что если у вас 64-разрядная система, то у вас есть два regsvr32.exe — один в папке C:WindowsSysWOW64, второй — C:WindowsSystem32. И это разные файлы, причем 64-бит находится в папке System32. Рекомендую в каждом из способов использовать полный путь к regsvr32.exe, а не просто имя файла, как у меня показано в примерах.

Первый способ описывается в Интернете чаще других и состоит в следующем:

  • Нажмите клавиши Windows + R или в меню Пуск Windows 7 выберите пункт «Выполнить» (если, конечно, у вас включено его отображение).
  • Введите regsvr32.exe путь_к_файлу_dll
  • Нажмите Ок или Enter.

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

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

  • Запустите командную строку от имени Администратора. В Windows 8 можно нажать клавиши Win+X, а затем выбрать нужный пункт меню. В Windows 7 вы можете найти командную строку в меню Пуск, кликнуть по ней правой кнопкой мыши и выбрать пункт «Запуск от имени администратора».
  • Введите команду regsvr32.exe путь_к_библиотеке_dll (пример вы можете видеть на скриншоте).

Опять же, вероятно, что вам не удастся зарегистрировать DLL в системе.

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

  • Кликните правой кнопкой мыши по DLL, которую нужно зарегистрировать и выберите пункт меню «Открыть с помощью».
  • Нажмите «Обзор» и найдите файл regsvr32.exe в папке Windows/System32 или Windows/SysWow64, откройте DLL с помощью него.

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

Почему не удается зарегистрировать DLL

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

Почему это происходит (далее будет и про то, как это исправить):

  • Не все файлы DLL предназначены для того, чтобы их регистрировали. Для того, чтобы его можно было зарегистрировать данным способом, он должен иметь поддержку той самой функции DllRegisterServer. Иногда ошибка бывает также вызвана тем, что библиотека уже зарегистрирована.
  • Некоторые сайты, предлагающие скачать DLL, содержат по факту, файлы-пустышки с искомым вами именем и их невозможно зарегистрировать, так как на самом деле это не библиотека.
Читайте также:  Dd wrt default password

А теперь о том, как это исправить:

  • Если вы программист и регистрируете свою DLL, попробуйте regasm.exe
  • Если вы пользователь и у вас что-то не запускается с сообщением о том, что DLL отсутствует на компьютере — поищите в Интернете, что это за файл, а не где его скачать. Обычно, зная это, вы можете скачать официальный установщик, который установит оригинальные библиотеки и зарегистрирует их в системе — например, для всех файлов с именем, начинающегося с d3d достаточно поставить DirectX с официального сайта Microsoft, для msvc — одну из версий Visual Studio Redistributable. (А если не запускается какая-то игра с торрента, то загляните-ка в отчеты антивируса, он мог удалить нужные DLL, это часто бывает с некоторыми модифицированными библиотеками).
  • Обычно, вместо регистрации DLL срабатывает размещение файла в одной папке с исполняемым файлом exe, который требует эту библиотеку.

На этом завершаю, надеюсь, что-то стало более ясно, чем было.

А вдруг и это будет интересно:

Почему бы не подписаться?

Рассылка новых, иногда интересных и полезных, материалов сайта remontka.pro. Никакой рекламы и бесплатная компьютерная помощь подписчикам от автора. Другие способы подписки (ВК, Одноклассники, Телеграм, Facebook, Twitter, Youtube, Яндекс.Дзен)

19.11.2015 в 17:59

Добрый день, у меня как раз случай, когда модуль загружен, но точка входа не найдена DllUnregisterserver, файл hotplug.dll Что вы в данном случае можете посоветовать? Вы написали, что напишите позже, вы уже написали?

20.11.2015 в 12:17

Андрей, пока нет.
Насчет советов: вы вручную откуда-то скачивали hotplug.dll? Проверяли его на virustotal? Пробовали отменить регистрацию в ОС, а потом вновь зарегистрировать с помощью regsvr32?

13.01.2016 в 01:05

не удается зарегить ни одним из способов застрял на ошибке точка входа не найдена. windows 7 x64 разряд. пытаюсь запустить Homeworld 2.

13.01.2016 в 11:15

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

18.03.2016 в 11:30

Может быть из-за слешей, у вас так «/», а должно быть так «».

26.06.2016 в 20:24

В командной строке, когда прописываю regsvr32 flowchartx32.dll
Пишет — «Отказано в доступе»

27.06.2016 в 09:13

Скорее всего у вас нет прав администратора, но не факт. Тут можно попробовать запустить вручную командную строку от имени администратора, а в ней уже вписать команду. А вообще, тут судя по всему у вас пиратка Skyrim и этот файл удалил ваш антивирус или защитник Windows. Как решить, думаю, догадаетесь.

21.09.2016 в 14:49

Все три способа попробовал не помогло Виндовс 10 Модуль C:WindowsSystem32VB6FR.DLL загружен, но точка входа DillRegisterServer не найдена.
Проверьте что C:WindowsSystem32VB6FR.DLL являеться правильным файлом DLL или ОСХ и повторите попытку

22.09.2016 в 11:30

Если вы уверены в том, что скачали оригинальный файл, то попробуйте его просто в папку с программой скопировать, которая ошибку показывает. (а если там есть подпапка bin — то в нее).

01.12.2016 в 22:54

Здравствуйте не могу нечего поделать с этим файлом kernelbase.dll не могу не одну игру установить перепробовал все варианты которые здесь написаны но нечего не помогло

02.12.2016 в 11:42

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

14.01.2017 в 18:06

Имя события проблемы APPCRASH
Имя приложения: ShadowOfMordor.exe Версия приложения: 1.0.1951.27
Помогите пж, я уже всё перепробовал

15.01.2017 в 09:21

Похоже на проблемы либо с драйверами видеокарты Radeon, либо на проблему с самим приложением (которое неправильно инициализирует видеокарту).

18.01.2017 в 14:25

перепробовал все способы, не знаю, что делать

30.04.2017 в 23:41

Ошибка точки входа ntdll dll. Все способы не работают. Windows 7

23.05.2017 в 13:22

Здравствуйте! Была проблема: устанавливал WebReaserch, лицензионный. Не работал, не мог найти библиотеку winaaut.dll, не получалось ее зарегистрировать посредством regsvr32.exe, о чем вы и пишете. Проблема решилась моментально, когда я скопировал winaaut.dll в папку установки программы. Спасибо!

27.09.2017 в 22:19

В основном ругается на directx, а потому попробуйте скачать его и установить (только не веб-установщик, а полный). Веб-установщик зачастую просто ничего не сделает.

01.10.2017 в 13:33

Тема — чушь, ничего нового, все и до этого пробовал, проблема осталась неизменной

02.10.2017 в 09:20

А какая именно проблема? Дело в том, что не любую DLL можно взять вот так и с помощью regsvr32 зарегистрировать (потому что в DLL внутри отсутствует модуль для регистрации и вы получаете что-то вроде «точка входа в процедуру DLL register server не найдена). Для многих нужно устанавливать компоненты, содержащие эту DLL: т.е. ищем частью чего является эта DLL и устанавливаем нужные компоненты.

15.10.2017 в 21:22

У меня библиотека не регистрируется на WIN 10 после последнего глобального обновления, это не вирус, а часть драйвера для DAC. На 8.1 тот же драйвер работает. По моему выше написанные методы устарели, программисты конечно знают что делать, но простому юзеру это, увы стало недоступно.

27.10.2017 в 02:56

Не работает ваша шляпа. Вы застряли в Хрюше и устаревшие советы даете. Постыдились бы, на Вас дети смотрят.

27.10.2017 в 09:56

В статье внимательно смотрите: не всё так можно зарегистрировать. Всякие msvcr/msvcp/dx и многие другие регистрируются собственными установщиками.

29.11.2017 в 19:01

Извините, пожалуйста, но у вас нормально с головой? Это что за советы? 1 Сделайте так, но у вас не будет работать! 2 Сделайте вот это, но это тоже не работает! Мой совет: не надо заниматься плагиатом и выдавать советы за свои. Спасибо.

30.11.2017 в 09:12

И где вы тут плагиат увидели, наоборот у всех везде написано — введите regsvr32 и т.д. и будет вам счастье, у меня — о том, что не будет.
Далее: я про то, что не будет работать пишу специально для начинающих пользователей: потому что они сталкиваются с проблемами типа «запуск программы невозможен, так как dll отсутствует», качают нужную DLL с левого сайта и пытаются её зарегистрировать в системе, хотя проблема решается иначе и вручную регистрировать DLL может потребоваться крайне редко и чаще — разработчикам.

20.01.2018 в 14:01

Здравствуйте. В общем,я элементарно не могу запустить игру,пишет об ошибке с файлом msvcp140.dll. Я как бы уже пробовал microsoft visual c++ переустанавливать,с сайта майкрософта. Но Это ничего не меняет,скачивал файл отдельно . Тоже самое,пробовал зарегистрировать,но вылетает ошибка ,мол не удалось загрузить модуль . Не найден указанный модуль.
Много если честно уже перепробовал ,даже винду менял,не просто переустанавливал ,а уже лиц нашел даже . В чем может быть проблема?

21.01.2018 в 09:36

А вы MS Visual Studio 2015 скачивали? и x86 и x64 (для 64-битных систем нужно сразу обе).
Иногда (для самого нового софта) может потребоваться MS Visual Studio 2017 (тоже обе версии)

12.11.2018 в 19:04

Проще скачать Driver Booster и запустить сканирование — он по умолчанию C++ от 2005-го до 2017-го предложит поставить. Рекомендую весь комплект поставить. Можно заодно и DirectX обновить — тогда уж точно вся поддержка для прог и игр будет…

Читайте также:  Латинские слова из 4 букв

P.S. Через Process Monitor смотрел — DB все катает с сайта Майкра…

27.01.2018 в 23:10

Добрый день! Подскажите, что делать. У меня на Windows 8.1 после обновлений последних перестал открывать браузеры Opera и Google Chrome — выдает ошибку «Запуск программы не возможно, так как на компьютере отсутствует USP10.dll. Попробуйте переустановить программу». Переустановка браузеров не помогла.

28.01.2018 в 09:24

Здравствуйте. А есть ли файл usp10.dll в папке Windows/System32?
Если вдруг нет, попробуйте выполнить проверку целостности системных файлов — https://remontka.pro/files-integrity-windows-10/

16.02.2018 в 13:13

Ничего не помогло,ни один из способов,выскакивает эта ошибка

17.02.2018 в 11:20

Не любую DLL можно так зарегистрировать. В вашем случае не нужно ее было ниоткуда скачивать, а следовало сделать вот так: https://remontka.pro/msvcp140-dll/

05.04.2018 в 19:47

Попробовал, пишет точка входа DillRegisterServer не найдена. Файл msvcp100.dll скачивал в составе Microsoft Visual C++ с официального сайта при том 2008 2010 2012 и 2015 гг. Что делать?

06.04.2018 в 09:00

Так он если вы устанавливали эти компоненты уже зарегистрирован и так.
Но если ошибка (что файл отсутствует) не исчезает, то:
1. Если у вас x64 Windows, то установите и x86 и x64 версии компонентов (многие программы и игры требуют 32-бит, независимо от системы).
2. Если 1 не сработает, попробуйте скопировать файл из System32 в папку с исполняемым файлом программы. Не поможет, скопируйте из SysWOW64.

24.04.2018 в 18:08

Здравствуйте. Ошибка заключается в следующем: не устанавливаются репаки игр, но если создавать образ то все в порядке. Ошибка при установке репака «Unarc.dll вернул код ошибки -11» так же встречалось -7. Пробовала переставлять винду, заменила оперативку, переставила архиваторы, ничего не помогает. Все пути на английском, авнтивирусы и брандмауэры выключены. Помогите пожалуйста.

25.04.2018 в 09:56

А встроенные «защитники» Windows тоже отключены?

04.06.2018 в 15:43

Здравствуйте! Такая вот проблемка возникла! Игра (Лицензия) требует наличия «D3DCompiler_47.dll»! Я, прекрасно понимая, что это вероятно библиотека DirectX, скачал соответствующий установщик с сайта Microsoft и… При установке получил странное сообщение, что у меня стоит последняя версия DirectX! Покопавшись в интернете, я выяснил, что это за файл и куда его ставить! А точнее в папку system32! Собственно, у меня там этого файла и не было! Я скачал его, положил в папку и осталось зарегистрировать! Но вот незадача… Все три способа, предложенных вами, дали, как вы и сказали, один и тот же результат! Ошибка следующая: «Не удалось загрузить модуль С:…d3dcompiler_47.dll. Проверьте, что двоичный файл хранится на указанном пути или запустите отладку чтобы диагностировать проблемы с этим двоичным файлом или зависимыми DLL файлами. Не найден указанный модуль.»

Так же теперь при запуске собственно игры выдаётся следующая ошибка: «Ошибка при запуске приложения (0xc000007b).»

Копирование данного файла в директорию игры так же ничего не дало!
Антивирус проверял, никаких системных файлов он не ел! =)

В чём может быть проблема и что можете посоветовать?

05.06.2018 в 12:49

Здравствуйте.
Не любую DLL можно зарегистрировать с помощью regsvr. Но, по поводу вашего файла — он слегка вводит в заблуждение своим названием и содержится не в тех библиотеках, что установщик DirectX ставит, а в обновлении KB4019990. подробнее: https://remontka.pro/d3dcompiler_47-dll/

05.06.2018 в 20:06

14.06.2018 в 21:15

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

17.07.2018 в 10:47

Проблема с iphlpapi.dll. Пишет что файл iphlpapi.dll не найден при запуске практически любой проги — AIDA, AIMP и прочих. Пробовал зарегистрировать библиотеку — не дает. Пробовал создать новую учетную запись, и из под нее запускать проги — не работают. Откат виндовса не работает

26.07.2018 в 09:51

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

20.08.2018 в 08:41

Не удается продолжить выполнение кода, поскольку система не обнаружила PSAPI.DLL. Для устранения этой проблемы попробуйте переустановить программу.
Естественно, переустановка не помогает.
что можете посоветовать?

20.08.2018 в 12:01

Здравствуйте.
Смотря что там за программа и какая версия Windows.
Вообще, для начала проверьте, есть ли файл psapi.dll в C:WindowsSystem32 и C:WindowsSysWOW64.
Если есть, попробуйте скопировать его в папку с exe-шником программы (сначала из одной папки, а если не сработает — из другой).

08.10.2018 в 22:14

В win7 x64 не получилось, хотя в ХР получалось. ДЛЛ та же — зрительные образы для проигрывателя WMP.

12.11.2018 в 19:11

Ты тот же самый DLL регаешь? То есть, взял с XP и засунул в 7-ку? Что за образы? Интегрированные или сторонние?

12.11.2018 в 19:28

Димось, старик (не ты ли говорил что ты стар уже?), разжуй ситуацию… Игры ноют что в ОС как-бы битые DLL DirectX. Через веб и автоном. установщик ошибка, мол, «Смотри в логи, я те тут не буду отчитываться!». Удалил все d3dx……dll из System32, SysWOW64 и WinSxS (в послед. я так понял что там бэкап DLL). Через веб-установщик накатил DirectX, встал нормально. Однако «d3dxof.dll» он не поставил, но я конечно же сделал бэкап перед удалением и засунул этот DLL обратно в исходное положение. В WinSxS засунул этот же DLL, права выставил. Через SysWOW64/RegSvc32.exe запустил DLL — пишет эту ошибку, что не вышло зарегать (не буду заново запускать регистратор). Получается что DLL уже зареган? Учитывая что я удалял через DELETE…

13.11.2018 в 14:00

Нельзя по результату сказать, зарегистрирована или нет: там суть в том, что regsvr сообщает о том, что именно в этой DLL нет функции регистрации… как бы объяснить: в общем, когда запускается regsvr32.exe что-то.dll, то в этой DLL ищется функция регистрации и запускается именно она, т.е. «библиотека сама себя регистрирует» и это могут делать не все DLL. d3dxof.dll не может.
И скорее всего, она уже зарегистрирована (удаление через delete не отменит регистрацию).

17.02.2019 в 15:55

модуль fmod.dll загружен, но точка DLLRegisterServer не найдена вот эта ошибка у меня вылезла
я тогда пытался установить игру и вылезла ошибка с отсутствие fmod.dll
что делать дальше я не знаю

17.02.2019 в 18:06

Не все библиотеки можно таким образом зарегистрировать. Проверьте, а не удалил ли ваш антивирус файл fmod.dll при установке игры. И если да, то переустановите её при отключенном антивирусе.

25.05.2019 в 00:03

Здравствуйте у меня проблема, я скачал Steam установил его и тут такая проблема steamui.dll ненайден я пробовал всё и ваш способ тоже как вы посоветуете исправить эту проблему моя характиристика ПК : windows xp, x32 , x86

30.06.2019 в 11:39

Помогите, пожалуйста!
Не могу найти файл opencl.dll который бы подошел и зарегистрировался. Из-за этого не работает magic bullet looks.
Это уже второй компьютер. Причем когда винда стояла 32бит, все работало

30.06.2019 в 11:45

Здравствуйте.
Opencl.dll входит в комплект драйверов видеокарт и при их установке вручную автоматически регистрируется в системе. Правда, случается (особенно на видеокартах NVidia) что с новыми драйверами достаточно старые игры перестают работать, ссылаясь на этот самый файл.

Читайте также:  Составление сводных таблиц в excel

12.01.2020 в 17:30

После установки драйвера от нвидиа. Голубой экран, перезагрузка, час не загружается. На г. Э. Была надпись об ошибке, которую пытаются решить. Как быть.

12.01.2020 в 18:32

А больше при перезагрузки таких ошибок не появляется? Какая версия системы?

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

Regsvr32 (Microsoft Windows Register Server) — это системная утилита, предназначающаяся для регистрации и отмены регистрации элементов управления ActiveX , компонентов фильтров (кодеков) и компонентов библиотек DLL в системе Windows посредством внесения изменений в реестр.

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

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

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

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

Ошибка сообщает нам о том, что загрузчик образа cDSsvc.exe не смог найти библиотеку MFC71.DLL , необходимую ей для функционирования. Один из способов устранения данного класса ошибок состоит в повторной инсталляции программы, в ситуации, когда файл искомой библиотеки входит в состав какого-либо дистрибутива, поскольку библиотека инсталлируется автоматически скриптом инсталляции. Если библиотека входит в состав другого пакета, например Microsoft Visual C++ 2010 x64 Redistributable , то переустановить необходимо именно его. Если же описанными способами ошибку исправить все же не удается, тогда нам на помощь приходит утилита Regsvr32 .

Алгоритм регистрации библиотеки

Regsvr32 при помощи функции LoadLibrary загружает библиотеку и, в зависимости от того, хотите вы зарегистрировать либо разрегистрировать (отменить регистрацию) библиотеку, пытается найти точку входа и вызвать функцию DllRegisterServer() либо DllUnRegisterServer() данной библиотеки и смотрит на результат. Более того, при запуске утилиты с параметром "/i" работает дополнительная логика и regsvr32 будет искать в библиотеке уже точку входа функций DllInstall / DllUnInstall . Все это говорит в пользу того, что существуют определенные требования к структуре DLL, которую вы хотите регистрировать с помощью regsvr32. Для того, чтобы управляющий элемент можно было зарегистрировать с помощью regsvr32, в DLL должны быть, как минимум, реализованы (экспортированы) функции DllRegisterServer, DllUnregisterServer, а при необходимости выполнения специфичных действий еще и функции DllInstall, DllUnInstall. Функции DllRegisterServer / DllUnregisterServer содержат логику, которая фактически и выполняет регистрацию библиотеки в системе, добавляя записи в реестр, требующиеся для управляющего элемента. Функции DllInstall / DllUnInstall служат для выполнения дополнительных действий, которые планирует произвести автор DLL. Поэтому помните, что:

Давайте посмотрим, что же происходит в случае, когда, к примеру, не определена функция DllRegisterServer:

В этом случае мы видим на экране ошибку: "Модуль . загружен, но точка входа DllRegisterServer не найдена". Но, давайте как перейдем, непосредственно, к самому процессу регистрации.

Новый метод

Как мы уже говорили, для регистрации библиотеки используется функция DllRegisterServer(). Функция проверяет 128-битный глобальный идентификатор (GUID, Global Unique ID) всех объектов COM/ActiveX, обнаруженных в библиотеке и последовательно прописывает информацию о них в реестр. GUID ни что иное как 128-битный глобальный идентификатор (GUID, Global Unique ID), идентифицирующий конкретный объект класса библиотеки. Регистрация объектов необходима, поскольку программы работают не с самими файлами DLL/OCX/ACX, а с объектами, представляющими определенный набор интерфейсов.
Для целей регистрации DLL используется следующие ветви реестра:

  • ветвь HKLMSOFTWAREClassesCLSID при регистрации COM-объектов библиотек для всех пользователей системы;
  • ветвь HKCUSOFTWAREClassesCLSID при регистрации COM-объектов библиотек только лишь для текущего пользователя;
  • ветвь HKLMSOFTWAREWow6432NodeClassesCLSID для регистрации 32-битных DLL в 64-битных ОС Windows;
  • Следует помнить, что некоторые расположения в реестре являются всего-лишь ссылками:

    В ветви HKEY_CLASSES_ROOTCLSID создается ключ с именем, эквивалентным идентификатору GUID. GUID применительно к СОМ называется идентификатором класса. Чтобы отличать идентификаторы классов от других идентификаторов, для них используют наименование CLSID . Примером значения CLSID может служить строка вида <2DB47AE5-CF39-43C2-B4D6-0CD8D90946F4>. В глобальном смысле данные уникальные номера "не повторяются" и уникально идентифицируют компоненты системы, что говорит нам об уникальности объекта класса библиотеки в пределах системы. Подразделами в этих ветках реестра могут быть:

    Ссылка на основную публикацию
    Технология etth что это
    ETTH — Ethernet To The Home (ETTH) is a specific application of Fiber to the premises (FTTP) that first emerged...
    Схема бп fsp350 60evf
    Внимание! Все работы с силовыми цепями необходимо проводить соблюдая технику безопасности! В сети интернет можно найти очень много описаний и...
    Схема включения синхронного генератора
    Цель работы: целью лабораторной работы является изучение методов подключения генератора к системе методом точной синхронизации в ручном режиме. При подключении...
    Технология nfc в наушниках что это
    NFC — это аббревиатура от английского Near Field Communication. С помощью этой технологии становится возможным обмен данными между различными устройствами,...
    Adblock detector