На компьютере отсутствует api-ms-win-security-cryptoapi-l1-1-0.dll — варианты решения

Как исправить ошибки api-ms-win-security-cryptoapi-l1-1-0.dllПри запуске или установке какой-либо программы пользователи могут получить сообщение о системной ошибке: «Запуск программы невозможен, так как на компьютере отсутствует api-ms-win-security-cryptoapi-l1-1-0.dll» и соответствующая программа, для примера — Roblox, не работает.

В этой инструкции подробно о том, почему вы сталкиваетесь с такой ошибкой и способах её исправить в различных версиях Windows.

Причины ошибки

Сообщение об ошибке: Запуск программы невозможен, так как на компьютере отсутствует api-ms-win-security-cryptoapi-l1-1-0.dll

Главная причина не отсутствие указанного DLL файла, а использование устаревшей версии ОС, часто — Windows 7 или 8. Например, файл api-ms-win-security-cryptoapi-l1-1-0.dll отсутствует и в Windows 11/10, но сообщений об ошибке вы не видите. Почему мы наблюдаем разное поведение:

  • Файлы DLL с именами api-ms-… это своего рода «виртуальные DLL», на них базируется работа слоя абстракции API Sets, реализованного в Windows.
  • Когда программа запрашивает какую-либо DLL вида «api-ms», специальный загрузчик, используя схему API Set Schema, указывает программе, где найти функции, относящиеся к этому вызову API Sets, обычно они «физически» находятся в библиотеках самой ОС — kernelbase.dll или ucrtbase.dll, а рассматриваемый в этой статье файл — это ссылки на функции cryptsp.dll
  • Нужные функции присутствуют в новых версиях Windows, но их может не быть в более ранних, отсутствуют и правила перенаправления. Результат — то самое сообщение об отсутствии нужного файла.

Причина ошибки не в том, что файла api-ms-win-security-cryptoapi-l1-1-0.dll нет на диске в Windows старой версии, а тот факт, что правила перенаправления для него отсутствуют в API Set Schema и загрузчик не может их найти.

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

Фактическое расположение DLL с функциями API Sets в Dependencies GUI

Если же открыть тот же файл файл с помощью той же программы в Windows 7/8, она отобразит лишь ошибки отсутствия этих DLL без указания системных библиотек, где находятся нужные функции (поскольку ОС о них ничего не знает):

Ошибки API Sets в Dependencies GUI

Некоторые инструкции на тему этих ошибок ведут к установке Visual C++ Redistributable. Иногда установка указанных компонентов и обновления Universal CRT может помочь с файлами «api-ms-win-crt-*», но для рассматриваемой ситуации это не является решением.

Способы исправить ошибку

Можно ли это решить? Да, это возможно, но не всегда и часто не просто.

По порядку о возможных способах исправить ошибку «Запуск программы невозможен, так как на компьютере отсутствует api-ms-win-security-cryptoapi-l1-1-0.dll»:

  1. Первый способ, который я настоятельно рекомендую — установить актуальную версию Windows 11 или Windows Даже если у вас старый компьютер, Windows 10 обычно вполне работоспособна на них. Это — лучший способ.
  2. Второй вариант — использование Downlevel Stub DLLs с тем же именем, как отсутствующий файл в сообщении об ошибке — это специальные файлы DLL для обратной совместимости, не содержащие кода функций, но содержащие нужные правила перенаправления, указывающие на функции в библиотеках имеющейся ОС Windows. Пример их использования будет приведён далее.
  3. Использование сторонних решений, таких как VxKex для эмуляции API новых ОС и трансляции вызовов Windows 7 или ручная правка таблицы импорта в исполняемом файле с помощью CFF Explorer (требует определенного опыта и уровня подготовки).

Теперь рассмотрим описанное на примере установщика Roblox и Windows 7 или Windows 8, в контексте которых пользователи чаще всего задают вопросы, касающиеся api-ms-win-security-cryptoapi-l1-1-0.dll.

Как могут выглядеть шаги по запуску, если по какой-то причине вы не готовы прислушаться к первой рекомендации (если решитесь повторять — всё под вашу ответственность):

  1. В случае Windows 7 (пример для x64 версии, ссылки актуальны для неё), если они ещё не установлены, устанавливаем обновления KB2999226KB2533623KB2670838 — эти обновления добавят многие из необходимых Stub DLLs (а Roblox нужна не только та библиотека, что отмечена в сообщении об ошибке, но и другие, мы видим лишь ту, которая вызывается первой), ucrtbase.dll, обновят таблицы API Set Schema.
  2. Найдём в Интернете Stub DLL для api-ms-win-security-cryptoapi-l1-1-0.dll. Мною проверена работоспособность и содержание файлов с сайта dllme.com, на момент написания этого материала файлы работают и безопасны. Для нашего случая переходим на эту страницу и скачиваем версии x64 и x86 (32-бит). Файл x64 распаковываем и копируем в папку C:\Windows\System32, файл версии x86 — в папку C:\Windows\SysWOW64 (я не перепутал пути, используем именно их).
  3. Пробуем запустить Roblox и видим сообщение об отсутствии уже другого похожего файла. Повторяем действия из шага 2 для него, на сайте присутствует поиск. И так по порядку для других «отсутствующих» файлов. Потенциально можно найти и другие источники Stub DLL в Интернете. Учитывайте: если файл имеет размер более пары десятков килобайт — это что-то сомнительное, напомню: в библиотеке не функции, а лишь адреса функций.Ошибка DLL в RobloxPlayerInstaller
  4. В итоге, при очередном запуске RobloxPlayerInstaller.exe мы либо получим сообщение об ошибке, не связанной с файлом, имя которого начинается с «api-ms», либо информацию о «Critical Error» с текстом «Roblox no longer supports Windows 7 or Windows 8.1» (Роблокс больше не поддерживает Windows 7 или 8.1).Критическая ошибка Roblox no longer supports Windows 7 or Windows 8.1
  5. Положение может спасти VxKex — скачиваем и устанавливаем со страницы GitHub разработчика Внимание: предварительно рекомендую создать точку восстановления системы, загружаем версию Release. Также многие антивирусы могут блокировать эту программу, поскольку она глубоко вмешивается в работу Windows.Загрузка VxKex
  6. После установки откройте свойства исполняемого файла (правый клик — свойства), в нашем примере — RobloxPlayerInstaller.exe, где мы увидим новую вкладку «VxKex». Отметьте верхние пункты — «Enable VxKex for this program» (включает эмуляцию API Windows 10) и «Report a different version of Windows» с выбором Windows 10 (заставляет программу думать, что она запущена в Windows 10). Примените настройки.Вкладка VxKex в свойствах исполняемого файла
  7. Запустите установщик или программу. В этот раз запуск происходит успешно:Установка Roblox в Windows 7 исправлена

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

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

Добавить комментарий

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