Regsvr32 jscript dll что это

Обновлено: 04.07.2024

Пользователи часто недоумевают, потому что программы, которые только недавно работали, не запускаются. Например, были запущены Photoshop и Skype, но теперь появляется ошибка "Программа не запускается, потому что jscript.dll отсутствует на вашем компьютере.

Что мне делать? Как мне ее вернуть? Как и где скачать jscript.dll и куда ее положить? Ответы на все ваши вопросы здесь!

Что такое jscript.dll?

"Jscript.dll пропущена" - это достаточно стандартная ошибка на Windows PC. Чаще всего проблема заключается в установке обновления Windows и неудачной установке некоторой программы.:

A .dll файл (Dynamic Link Library) функционирует, когда конкретной программе нужен этот .dll файл. Если он поврежден/пропущен, пользователи видят, например, ошибку jscript.dll, которая приводит к аварийному завершению работы. Стоит добавить, что jscript.dll - это файл, используемый в дистрибутиве Visual C++ Redistributable для Visual Studio 2015.:

При появлении уведомления о пропущенном файле пользователи начинают поиск загрузки jscript.dll. Лучше делать это в проверенном месте, например на сайте DLL Kit, где нет ни угроз, ни вирусов.:

Самые распространенные ошибки с jscript.dll файлом на Windows

  • :Файл Dll удален/поврежден. Основная причина - удален или поврежден важный для приложения .dll файл. Вам необходимо восстановить файл или скачать его еще раз.
  • Ошибка в облаке Adobe. Проблема вызвана поломкой Visual C ++.
  • Файлы Visual Studio 2015 повреждены/пропущены. Файл .dll отсутствует на компьютере или поврежден приложением/системой/вирусом.
  • Система ПК заражена вирусами. Вредоносные программы и вирусы всегда повреждают файл jscript.dll.
  • В нем повреждены системные файлы. Ошибки и повреждения возникают после некорректной перезагрузки Windows и работы с зараженными программами и приложениями.

Другие распространенные Jscript.dll ошибки включают:

  • “Jscript.dll пропущена“
  • “Jscript.dll ошибка загрузки“
  • “Jscript.dll крах“
  • “Jscript.dll не найдена“
  • “Jscript.dll не удалось обнаружить“
  • “Jscript.dll Нарушение Доступа“
  • “Точка входа в процедуру Jscript.dll error“
  • “Не получается найти Jscript.dll“
  • “Не могу зарегистрировать Jscript.dll“

метод 1: Загрузить jscript.dll автоматически

Не знаете, какая версия jscript.dll вам нужна? Не волнуйтесь; используйте автоматический метод для решения проблемы или просто прочитайте статью ниже.

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

  • Одновременно нажмите клавиши Windows и R на клавиатуре - появится окно Run - введите cmd - нажмите Ctrl+Shift+Enter - перед вами появится командная строка с правами администратора.
  • Когда появится запрос, необходимо разрешить командной строке вносить изменения, поэтому нажмите Yes.
  • Теперь удалите файл реестра (введите или скопируйте команду regsvr32 /u jscript.dll, а затем нажмите Enter).
  • Теперь зарегистрируйте файл: введите команду regsvr32 jscript.dll и нажмите Enter.
  • Закрыть командную строку и запустить приложение.

JSCRIPT.DLL ВЕРСИИ

дата выпуска: February 28, 2021

Версия / биты Язык Размер MD5 / SHA-1
5.812.10586.306 64bit U.S. English 0.77 MB MD5 SHA1

дата выпуска: February 28, 2021

Версия / биты Язык Размер MD5 / SHA-1
5.812.10586.306 32bit U.S. English 0.62 MB MD5 SHA1

дата выпуска: February 28, 2021

Версия / биты Язык Размер MD5 / SHA-1
5.812.10586.3 64bit U.S. English 0.77 MB MD5 SHA1

дата выпуска: February 28, 2021

Версия / биты Язык Размер MD5 / SHA-1
5.812.10586.3 32bit U.S. English 0.62 MB MD5 SHA1

дата выпуска: February 28, 2021

Версия / биты Язык Размер MD5 / SHA-1
5.8.9600.17728 64bit U.S. English 0.78 MB MD5 SHA1

дата выпуска: February 28, 2021

Версия / биты Язык Размер MD5 / SHA-1
5.8.9600.17728 32bit U.S. English 0.63 MB MD5 SHA1

дата выпуска: February 28, 2021

Версия / биты Язык Размер MD5 / SHA-1
5.8.9600.16384 32bit U.S. English 0.58 MB MD5 SHA1

дата выпуска: February 28, 2021

Версия / биты Язык Размер MD5 / SHA-1
5.8.9200.16859 32bit U.S. English 0.66 MB MD5 SHA1

дата выпуска: February 28, 2021

Версия / биты Язык Размер MD5 / SHA-1
5.8.6001.18702 32bit U.S. English 0.69 MB MD5 SHA1

дата выпуска: February 28, 2021

Версия / биты Язык Размер MD5 / SHA-1
5.7.0.18599 64bit U.S. English 0.72 MB MD5 SHA1

дата выпуска: February 28, 2021

Версия / биты Язык Размер MD5 / SHA-1
5.7.0.16599 32bit U.S. English 0.49 MB MD5 SHA1

дата выпуска: February 28, 2021

Версия / биты Язык Размер MD5 / SHA-1
5.6.0.8820 32bit U.S. English 0.43 MB MD5 SHA1

дата выпуска: February 28, 2021

Версия / биты Язык Размер MD5 / SHA-1
5.6.0.8820 32bit U.S. English 0.43 MB MD5 SHA1

Какая версия jscript.dll правильная?

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

Where should you place jscript.dll?

Ошибка "jscript.dll пропущена" будет исправлена, если переместить файл в папку установки приложения или игры. Также можно переместить jscript.dll в системный каталог Windows.

Если этот метод не помогает, используйте следующий.

метод 3: Переустановить Visual C++ Redistributable for Visual Studio 2015

Мы рекомендуем переустановить переустановку дистрибутива Visual C++ для Visual Studio 2015. Пожалуйста, придерживайтесь рекомендаций Microsoft по правильной установке отсутствующих файлов.

Рекомендуется скачать программу с официального сайта Microsoft:

  • Вам необходимо скачать Microsoft Visual C++ Redistributable с официального сайта Microsoft.
  • Выберите файл для вашей версии Windows: vc_redist.x64.exe для 64-битной версии или vc_redist.x86.exe для 32-битной операционной системы. Установите флажок рядом с файлом и нажмите кнопку Next.
  • Открыть файл - прочитать условия лицензирования программного обеспечения Майкрософт - согласиться - выбрать пункт Установить.

Если этот метод не помогает, используйте следующий.

Список некоторых исполняемых файлов библиотеки Visual C++

  • mfc140u.dll
  • mfcm140.dll
  • mfcm140u.dll
  • mfc140chs.dll
  • mfc140cht.dll
  • ucrtbase.dll
  • vcruntime140.dll
  • msvcp140.dll
  • concrt140.dll
  • vccorlib140.dll
  • vcamp140.dll

Вот некоторые решения по исправлению ошибки "jscript.dll is Missing". Пожалуйста, прочитайте все инструкции и следуйте им, чтобы успешно добавить конкретную версию файла .dll в Windows для восстановления jscript.dll проблемы.

метод 4: Запустить SFC сканирование (System File Checker)

Проверка системных файлов (SFC scan) - инструмент, доступный в Windows. Устройство считается самым быстрым способом автоматического исправления поврежденных системных файлов. Для запуска необходимо запустить его:

Если этот метод не помогает, используйте следующий.

метод 5: Обновить Windows до последней версии

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

  • Открыть настройки из меню Пуск или с помощью комбинации клавиш Windows+I.
  • Перейти к обновлению и безопасности.
  • В закладке Windows Update нажмите Check for updates.
  • Новое обновление найдено - Установить сейчас.

Если этот метод не помогает, используйте следующий.

метод 6: Переустановить нужное приложение

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

Аннотация

Regsvr32 — это служебная программа командной строки для регистрации и отмены регистрации элементов управления OLE, например ActiveX и библиотеки DLL в реестре Windows. Средство Regsvr32.exe установлено в папке %systemroot%\System32 в ОС Windows XP и более поздних версиях Windows.

Примечание. В 64-разрядных версиях Windows есть две версии файла Regsv32.exe:

64-разрядная версия — %systemroot%\System32\regsvr32.exe;

32-разрядная версия — %systemroot%\SysWoW64\regsvr32.exe.

Синтаксис команды Regsvr32

Программа RegSvr32.exe имеет следующие параметры командной строки.

Regsvr32 [/u] [/n] [/i[:строка_команд]] DLL-файл

/u — отменяет регистрацию сервера

/i — вызывает DllInstall, передавая ей в параметре необязательную строку_команд; при использовании с ключом /u вызывает DllUnInstall.
/n — не вызывает DllRegisterServer; это может использоваться с ключом /i

Типичные решения ошибок Regsvr32

При появлении ошибки Regsvr32 попробуйте устранить ее одним из следующих способов.

Способ 1. Повторный запуск команды Regsvr32 в командной строке с повышенными привилегиямиЧтобы открыть командную строку с повышенными привилегиями, выполните указанные ниже действия.

Windows 8.1 и Windows 8Проведите пальцем от правого края экрана к центру и коснитесь кнопки Поиск. Либо, если вы используете мышь, переместите указатель в правый нижний угол экрана и щелкните кнопку Поиск. Введите запрос Командная строка в поле Поиск, щелкните правой кнопкой мыши элемент Командная строка, затем выберите команду Запуск от имени администратора. Если система запросит пароль администратора или подтверждение, введите пароль или нажмите кнопку Разрешить.

Windows XPВойдите в систему в качестве администратора или с другой учетной записью с правами администратора и откройте окно "Командная строка".

Способ 2. Использование 32-разрядной версии Regsvr32 для регистрации 32-разрядной библиотеки DLL в 64-разрядной версии ОС WindowsЕсли при регистрации 32-разрядной библиотеки DLL в 64-разрядной версии ОС Windows появляется ошибка, выполните следующие действия.

Откройте командную строку с повышенными привилегиями.

Если 32-разрядная библиотека DLL находится в папке %systemroot%\System32, переместите ее в папку %systemroot%\SysWoW64.

HKLM\SOFTWARE\Classes\CLSID - при регистрации COM-объектов библиотек для всех пользователей системы;

HKCU\SOFTWARE\Classes\CLSID - при регистрации COM-объектов библиотек только лишь для текущего пользователя;

HKLM\SOFTWARE\Wow6432Node\Classes\CLSID - для регистрации 32-битных DLL в 64-битных ОС 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:

Regsvr32 [/u] [/s] [/n] [/i[:строка_команд]] DLL-файл

/u — - вызывает DllUnInstall, отменяет регистрацию сервера

/i — вызывает DllInstall, передавая ей в параметре необязательную строку_команд;

/n — не вызывает DllRegisterServer; может использоваться с ключом /I;

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

Подсказка по использованию regsvr32

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 :

Или без использования переменных окружения:

В качестве дополнительного программного средства для управления регистрацией объектов COM, очень удобно пользоваться бесплатной утилитой от Nirsoft RegDLLView.exe . Программа не требует установки в системе, имеет небольшой размер и позволяет:

- Выполнить регистрацию или отмену регистрации выбранных объектов.

- Создать reg-файл для выполнения отмены регистрации одной или нескольких DLL.

- Зарегистрировать или перерегистрировать указанный файл.

RegDLLView – работа с регистрацией и отменой регистрации DLL

Разработка Microsoft ® JScript компанией Microsoft послужила толчком для создания последней версии файла jscript.dll. Он также известен как файл Microsoft ® JScript (расширение DLL), который классифицируется как файл Win32 DLL (Библиотека динамической компоновки).

Первый выпуск файла jscript.dll на платформе Windows XP состоялся 10/25/2001 для Windows XP. Самая последняя версия [версия 5.812.10240.16384] была представлена 07/04/2011 для Microsoft Office Access 2010 14. Файл jscript.dll включен в версии ОС Windows 10, Windows 8.1 и Windows 8.

Ниже приведены подробные сведения о файле, порядок устранения неполадок, возникших с файлом DLL, и бесплатные загрузки некоторых версий файла jscript.dll.




Совместимость с Windows 10, 8, 7, Vista, XP и 2000

Средняя оценка пользователей

Сведения о разработчике и ПО
Разработчик ПО: Microsoft Corporation
Программа: Microsoft ® JScript
Авторское право: © Microsoft Corporation. All rights reserved.
Сведения о файле
Набор символов: Unicode
Код языка: English (U.S.)
Флаги файлов: (none)
Маска флагов файлов: 0x0003
Точка входа: 0x46b60
Размер кода: 581120
Информация о файле Описание
Размер файла: 649 kB
Дата и время изменения файла: 2020:03:04 15:27:32+00:00
Тип файла: Win32 DLL
Тип MIME: application/octet-stream
Тип компьютера: Intel 386 or later, and compatibles
Метка времени: 2036:03:24 22:46:25+00:00
Тип PE: PE32
Версия компоновщика: 14.10
Размер кода: 581120
Размер инициализированных данных: 83968
Размер неинициализированных данных: 0
Точка входа: 0x46b60
Версия ОС: 10.0
Версия образа: 10.0
Версия подсистемы: 10.0
Подсистема: Windows GUI
Номер версии файла: 5.812.10240.16384
Номер версии продукта: 5.812.10240.16384
Маска флагов файлов: 0x0003
Флаги файлов: (none)
Файловая ОС: Win32
Тип объектного файла: Dynamic link library
Подтип файла: 0
Код языка: English (U.S.)
Набор символов: Unicode
Наименование компании: Microsoft Corporation
Описание файла: Microsoft ® JScript
Версия файла: 5.812.10240.16384
Внутреннее имя: jscript.dll
Авторское право: © Microsoft Corporation. All rights reserved.
Название продукта: Microsoft ® JScript
Версия продукта: 5.812.10240.16384

✻ Фрагменты данных файлов предоставлены участником Exiftool (Phil Harvey) и распространяются под лицензией Perl Artistic.

Ошибки библиотеки динамической компоновки jscript.dll

Файл jscript.dll считается разновидностью DLL-файла. DLL-файлы, такие как jscript.dll, по сути являются справочником, хранящим информацию и инструкции для исполняемых файлов (EXE-файлов), например HelpPane.exe. Данные файлы были созданы для того, чтобы различные программы (например, Microsoft Office Access 2010) имели общий доступ к файлу jscript.dll для более эффективного распределения памяти, что в свою очередь способствует повышению быстродействия компьютера.

  • Нарушение прав доступа по адресу — jscript.dll.
  • Не удается найти jscript.dll.
  • Не удается найти C:\Windows\SysWOW64\jscript.dll.
  • Не удается зарегистрировать jscript.dll.
  • Не удается запустить Microsoft Office Access 2010. Отсутствует требуемый компонент: jscript.dll. Повторите установку Microsoft Office Access 2010.
  • Не удалось загрузить jscript.dll.
  • Не удалось запустить приложение, потому что не найден jscript.dll.
  • Файл jscript.dll отсутствует или поврежден.
  • Не удалось запустить это приложение, потому что не найден jscript.dll. Попробуйте переустановить программу, чтобы устранить эту проблему.

Файл jscript.dll может отсутствовать из-за случайного удаления, быть удаленным другой программой как общий файл (общий с Microsoft Office Access 2010) или быть удаленным в результате заражения вредоносным программным обеспечением. Кроме того, повреждение файла jscript.dll может быть вызвано отключением питания при загрузке Microsoft Office Access 2010, сбоем системы при загрузке jscript.dll, наличием плохих секторов на запоминающем устройстве (обычно это основной жесткий диск) или, как нередко бывает, заражением вредоносным программным обеспечением. Таким образом, крайне важно, чтобы антивирус постоянно поддерживался в актуальном состоянии и регулярно проводил сканирование системы.


Шаг 1. Восстановите компьютер до последней точки восстановления, «моментального снимка» или образа резервной копии, которые предшествуют появлению ошибки.

Чтобы начать восстановление системы (Windows XP, Vista, 7, 8 и 10):

Если на этапе 1 не удается устранить ошибку jscript.dll, перейдите к шагу 2 ниже.


Шаг 2. Если вы недавно установили приложение Microsoft Office Access 2010 (или схожее программное обеспечение), удалите его, затем попробуйте переустановить Microsoft Office Access 2010.

Чтобы удалить программное обеспечение Microsoft Office Access 2010, выполните следующие инструкции (Windows XP, Vista, 7, 8 и 10):

После полного удаления приложения следует перезагрузить ПК и заново установить Microsoft Office Access 2010.

Если на этапе 2 также не удается устранить ошибку jscript.dll, перейдите к шагу 3 ниже.


Microsoft Office Access 2010 14

Шаг 3. Выполните обновление Windows.


Если ни один из предыдущих трех шагов по устранению неполадок не разрешил проблему, можно попробовать более агрессивный подход (примечание: не рекомендуется пользователям ПК начального уровня), загрузив и заменив соответствующую версию файла jscript.dll. Мы храним полную базу данных файлов jscript.dll со 100%-ной гарантией отсутствия вредоносного программного обеспечения для любой применимой версии Microsoft Office Access 2010 . Чтобы загрузить и правильно заменить файл, выполните следующие действия:

Windows 10: C:\Windows\WinSxS\wow64_microsoft-windows-scripting-jscript_31bf3856ad364e35_11.0.16299.125_none_de8f011bbfb1a7bb\
Windows 10: C:\Windows\System32\
Windows 10: C:\Windows\SysWOW64\
Windows 10: C:\Windows\Temp\527D94AF-D053-4381-B105-0D815D53791E\wow64_microsoft-windows-scripting-jscript_31bf3856ad364e35_11.0.16299.1029_none_d863168d86aa8961\
Windows 10: C:\Windows\WinSxS\wow64_microsoft-windows-scripting-jscript_31bf3856ad364e35_11.0.16299.1029_none_d863168d86aa8961\
Показать на 12 каталогов больше + Windows 10: C:\Windows\System32\
Windows 10: C:\Windows\Temp\527D94AF-D053-4381-B105-0D815D53791E\amd64_microsoft-windows-scripting-jscript_31bf3856ad364e35_11.0.16299.1029_none_ce0e6c3b5249c766\
Windows 10: C:\Windows\WinSxS\amd64_microsoft-windows-scripting-jscript_31bf3856ad364e35_11.0.16299.1029_none_ce0e6c3b5249c766\
Windows 10: C:\Windows\WinSxS\amd64_microsoft-windows-scripting-jscript_31bf3856ad364e35_11.0.16299.125_none_d43a56c98b50e5c0\
Windows 8.1: C:\Windows\System32\
Windows 8: C:\Windows\System32\
Windows 7: C:\Windows\System32\
Windows 7: C:\Windows\SysWOW64\
Windows Vista: C:\Windows\SysWOW64\
Windows Vista: C:\Windows\System32\
Windows XP: C:\WINDOWS\system32\dllcache\
Windows XP: C:\Windows\System32\

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

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

DLL (Dynamic Link Library, Библиотека Динамической Компоновки) - динамически подключаемый набор подпрограмм (функций), логически объединенных в единый бинарный файл, которые могут быть многократно/одновременно динамически загружены (использованы) различными приложениями, требующими для своего функционирования данные функции.

[краткая] история распределенного кода

Не лишним тут, я думаю, будет познакомиться с историей распределенного кода, что даст нам понимание причин возникновения и развития динамических библиотек. А это, в свою очередь, даст очевидное представление о том, какой функционал несет в себе средство regsvr32 и для чего оно, собственно, предназначается.

Линейное программирование

На заре развития языков программирования, при создании (разработке) программ использовался так называемый линейный подход, который заключался в том, что код писался/выполнялся "сверху-вниз", в четкой последовательности от начала к концу. Но как только человек научился писать код чуть сложнее, чем простой вывод фразы "Hello, World!", перед ним тут же встало несколько проблем, которые показали, что подход имеет очевидные недостатки:

  • исходный код необходимо было копировать из старого проекта в новый;
  • копирование старого кода приводило к ошибкам, путанице, нестыковкам, необходимости исправления и подгонки под новый проект;

Процедуры (функции)

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

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

Оверлеи

В условиях дороговизны оперативной памяти и отсутствия у многих операционных систем того времени (MSDOS) механизма виртуализации адресного пространства процесса (виртуальной памяти), обеспечивающего достаточное адресное пространство для приложений, появилась необходимость загружать в ограниченное пространство [дорогой] физической памяти много превосходящие по размеру код/данные приложений. Следствием всего этого явилось разбиение кода/данных программы на обособленные модули, получившие название оверлеев (overlay). Данный механизм непрямую не связан с разделением кода, тем не менее мы о нем упомянем, как о существенной вехе в развитии механизмов разделения кода.

Прерывания

Первой попыткой решения проблемы распределения кода был механизм программных прерываний, который позволял создавать (размещать в микрокоде BIOS) и вызывать сервисы, доступные любым операционным системам и программам. Таблица прерываний включала 255 векторов (адресов), каждый из которых задавал процедуру обслуживания определенного прерывания. Данный сервис мог лешгко программироваться пользователями, то есть любая программа могла [пере]назначить одно из доступных программных прерываний, предоставив, таким образом, общесистемный сервис. И не смотря на все положительные стороны подобного подхода, он имел и ряд серьёзных недостатков:

  • Фиксированное количество сервисов, ограниченное размером таблицы векторов прерываний (255);
  • Отсутствие обработки исключительных ситуаций.
  • Отсутствие системы безопасности;
  • Обособленный синтаксис, несовместимости с синтаксисом языков высокого уровня (необходимость оперировать низкоуровневыми регистрами);
  • Отсутствие контроля типов и корректности данных;

Динамические библиотеки

Дальнейшее развитие данной концепции (а так же развитие ОС) привело к появлению динамически загружаемых библиотек (называемых упрощенно динамическими библиотеками, DLL). Отличительной особенностью было то, что обращение к функционалу этих библиотек могло осуществляться из кода на любых языках и из любых средств разработки [в рамках операционной системы]. На механизме динамических библиотек построен весь программный интерфейс (WinAPI) операционных систем Mirosoft Windows, поэтому любое API, любой сервис, так или иначе базируются на DLL. Характерная особенность динамической библиотеки заключается в том, что она может использоваться сразу несколькими приложениями, а система обеспечивает присутствие в памяти всего-лишь одного экземпляра [кода] динамической библиотеки для всех приложений, которые содержат ссылки на функции данной библиотеки. DLL имели ряд выраженных недостатков:

  • при загрузке динамической библиотеки [в адресное пространство процесса] использовалось лишь её символическое имя, поскольку отсутствовал механизм устойчивой идентификации необходимых библиотек, соответственно:
    • в подгруженной библиотеке [сторонней/не той версии] мог содержаться код, разрушающий структуры данных и кода вызывающего приложения.
    • подгружаемая библиотека [сторонняя/не той версии] могла использовать контекст безопасности основного приложения для получения доступа к ресурсам, к которым в обычных условиях доступа у нее нет.

    Компонентная объектная модель (COM)

    • HKEY_CLASSES_ROOT\CLSID -- GUID идентификаторов классов компонентов;
    • HKEY_CLASSES_ROOT\Interface -- IID идентификаторов интерфейсов (для реализующих их компонентов);
    • HKEY_CLASSES_ROOT\TypeLib -- Информация о файлах, в которых хранятся библиотеки;

    Причем сам HKEY_CLASSES_ROOT представляет собой комбинацию разделов HKCU\Software\Classes (для текущего пользователя) и HKLM\Software\Classes (для машины в целом).

    Чтобы как-то отличать идентификаторы классов от иных [похожих] системных идентификаторов, применительно к СОМ эти идентификаторы называются идентификаторами класса , и для них используется аббревиатура CLSID .

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

    HKCR\CLSID\<GUID>\LocalServer = <полный путь к 16-битному файлу>
    • COM базируется на динамических библиотеках (в них то и размещаются компоненты). А как мы помним с DLL сохранялась проблема, связанная с совпадением имён файлов библиотек;
    • База данных COM располагается в реестре, и работать с ней предлагалось напрямую, без какого-либо специализированного API. При том, что раздел базы данных является общедоступным, после продолжительной эксплуатации системы он традиционно приходил в рассогласованное состояние (приводящее к множеству системных ошибок).

    Сборки (assembly)

    Сборка (assembly) - коллекция типов и ресурсов, сгруппированная в один или нескольких файлов для совместного функционирования, образующая логическую функциональную единицу.

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

    Но, вернемся к нашим библиотекам :)

    По какой причине, для использования функций DLL в системе непременно требуется их регистрация? Ответ: чтобы система смогла их найти!!

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

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

    regsvr32 запуск программы невозможен

    [упрощенное] описание процесса регистрации библиотеки

    Утилита regsvr32 при помощи системной функции LoadLibrary загружает библиотеку и, в зависимости от того входных параметров [командной строки], выполняет:

    • ищет в библиотеке точку входа и вызывает функцию DllRegisterServer либо DllUnRegisterServer данной библиотеки и смотрит на возвращаемый результат.
    • ищет в библиотеке точку входа и вызывает функции DllInstall / DllUnInstall .

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

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

    regsvr32 точка входа DllRegisterServer не найдена

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

    Новый метод

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

    Если вам необходимо поменять расположение библиотеки DLL в системе (например, поменять директорию размещения), то потребуется её перерегистрация.

    Старый метод

    32-битные и 64-битные версии regsvr32

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

    В данный момент более активно начали использоваться 64-битные версии Windows. Если в 32-битных версиях Windows всё было достаточно прозрачно и присутствовало только одна версия программы, то в 64-битных версиях ОС имеются две версии утилиты regsvr32:

    • 64-разрядная версия утилиты — %SystemRoot%\System32\regsvr32.exe (используется по-умолчанию при запуске без конкретизации пути);
    • 32-разрядная версия утилиты — %systemRoot%\SysWoW64\regsvr32.exe

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

    Для 64-битных ОС Windows существует золотое правило: директория System32 системы предназначается для родных 64-битных приложений, директория SysWOW64 для 32-битных. Немного не интуитивно, однако это сложившийся факт!! WOW64 (Windows on Windows64) - 32-битная подсистема, которая запускается в 64-битной среде.

    Поэтому, если вам требуется зарегистрировать 32-разрядную версию библиотеки DLL в 64-разрядной ОС, и у вас возникает ошибка, то можно поступить следующим образом:

    1. Открыть командную строку с правами администратора;
    2. Если требуемая для регистрации 32-разрядная библиотека DLL находится в директории %SystemRoot%\System32 , переместить ее в папку %SystemRoot%\SysWoW64;
    3. Выполнить команду:
      %SystemRoot%\SysWoW64\regsvr32 <полный путь к библиотеке DLL>

    Если же перед вами стоит задача зарегистрировать 64-битную DLL в 64-разрядной ОС:

    1. Открыть командную строку с правами администратора;
    2. Если требуемая для регистрации 64-разрядная библиотека DLL находится в директории %SystemRoot%\SysWOW64 , переместить ее в папку %SystemRoot%\System32
    3. Выполнить команду:
      %SystemRoot%\System32\regsvr32 <полный путь к библиотеке DLL>

    Синтаксис regsvr32

    Как уже говорилось выше, regsvr32 - это утилита командной строки, поэтому в целях практического использования может запускаться из-под всем уже знакомой cmd, либо использоваться в сценариях.

    В большинстве случаев, для регистрации DLL требуются повышенные привилегии, то есть права локального администратора.

    Утилита regsvr32.exe имеет следующие параметры командной строки:

    Regsvr32 [/u] [/s] [/n] [/i[:cmdline]]

    Список ключей утилиты и описание их действия приведем в следующей таблице:

    Отменяет регистрацию DLL. Отменить можно только регистрацию DLL, команда не применима к элементам управления и фильтрам.

    вызывает функцию DllInstall, передавая ей в качестве параметра необязательную строку команд cmdline; Вызов DllInstall приводит к вызову стандартных функций регистрации DllRegisterServer/DllUnRegisterServer, однако позволяет передать строку параметров, которые могут изменить поведение регистрации, например провести регистрацию DLL более одного раза. Ключ /i при использовании с ключом /u вызывает DllUnInstall.

    не вызывает DllRegisterServer, то есть вызывается только DllInstall; это может быть использовано с ключом /i для передачи дополнительных параметров для регистрации.

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

    Напоминаю, будьте внимательны с версиями утилиты regsvr32 под Windows различной разрядности. В некоторых случаях приходится уточнять путь к утилите при запуске.
    Более того, практически всегда, когда регистрируемый компонент лежит вне путей, включенных в переменную %PATH% (к примеру, если он не находится в %SystemRoot%\System32), путь к компоненту приходится уточнять!
    Пример:

    *Составные пути к файлу должны заключаться в кавычки по правилам синтаксиса командной строки Windows.

    Читайте также: