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

Главная причина не отсутствие указанного 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:

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

Некоторые инструкции на тему этих ошибок ведут к установке Visual C++ Redistributable. Иногда установка указанных компонентов и обновления Universal CRT может помочь с файлами «api-ms-win-crt-*», но для рассматриваемой ситуации это не является решением.
Способы исправить ошибку
Можно ли это решить? Да, это возможно, но не всегда и часто не просто.
По порядку о возможных способах исправить ошибку «Запуск программы невозможен, так как на компьютере отсутствует api-ms-win-security-cryptoapi-l1-1-0.dll»:
- Первый способ, который я настоятельно рекомендую — установить актуальную версию Windows 11 или Windows Даже если у вас старый компьютер, Windows 10 обычно вполне работоспособна на них. Это — лучший способ.
- Второй вариант — использование Downlevel Stub DLLs с тем же именем, как отсутствующий файл в сообщении об ошибке — это специальные файлы DLL для обратной совместимости, не содержащие кода функций, но содержащие нужные правила перенаправления, указывающие на функции в библиотеках имеющейся ОС Windows. Пример их использования будет приведён далее.
- Использование сторонних решений, таких как VxKex для эмуляции API новых ОС и трансляции вызовов Windows 7 или ручная правка таблицы импорта в исполняемом файле с помощью CFF Explorer (требует определенного опыта и уровня подготовки).
Теперь рассмотрим описанное на примере установщика Roblox и Windows 7 или Windows 8, в контексте которых пользователи чаще всего задают вопросы, касающиеся api-ms-win-security-cryptoapi-l1-1-0.dll.
Как могут выглядеть шаги по запуску, если по какой-то причине вы не готовы прислушаться к первой рекомендации (если решитесь повторять — всё под вашу ответственность):
- В случае Windows 7 (пример для x64 версии, ссылки актуальны для неё), если они ещё не установлены, устанавливаем обновления KB2999226, KB2533623, KB2670838 — эти обновления добавят многие из необходимых Stub DLLs (а Roblox нужна не только та библиотека, что отмечена в сообщении об ошибке, но и другие, мы видим лишь ту, которая вызывается первой), ucrtbase.dll, обновят таблицы API Set Schema.
- Найдём в Интернете Stub DLL для api-ms-win-security-cryptoapi-l1-1-0.dll. Мною проверена работоспособность и содержание файлов с сайта dllme.com, на момент написания этого материала файлы работают и безопасны. Для нашего случая переходим на эту страницу и скачиваем версии x64 и x86 (32-бит). Файл x64 распаковываем и копируем в папку C:\Windows\System32, файл версии x86 — в папку C:\Windows\SysWOW64 (я не перепутал пути, используем именно их).
- Пробуем запустить Roblox и видим сообщение об отсутствии уже другого похожего файла. Повторяем действия из шага 2 для него, на сайте присутствует поиск. И так по порядку для других «отсутствующих» файлов. Потенциально можно найти и другие источники Stub DLL в Интернете. Учитывайте: если файл имеет размер более пары десятков килобайт — это что-то сомнительное, напомню: в библиотеке не функции, а лишь адреса функций.

- В итоге, при очередном запуске RobloxPlayerInstaller.exe мы либо получим сообщение об ошибке, не связанной с файлом, имя которого начинается с «api-ms», либо информацию о «Critical Error» с текстом «Roblox no longer supports Windows 7 or Windows 8.1» (Роблокс больше не поддерживает Windows 7 или 8.1).

- Положение может спасти VxKex — скачиваем и устанавливаем со страницы GitHub разработчика Внимание: предварительно рекомендую создать точку восстановления системы, загружаем версию Release. Также многие антивирусы могут блокировать эту программу, поскольку она глубоко вмешивается в работу Windows.

- После установки откройте свойства исполняемого файла (правый клик — свойства), в нашем примере — RobloxPlayerInstaller.exe, где мы увидим новую вкладку «VxKex». Отметьте верхние пункты — «Enable VxKex for this program» (включает эмуляцию API Windows 10) и «Report a different version of Windows» с выбором Windows 10 (заставляет программу думать, что она запущена в Windows 10). Примените настройки.

- Запустите установщик или программу. В этот раз запуск происходит успешно:

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