Дело не в винде, проблема в загрузчике.
Начиная с определенных версий винды майкрософт ввели некие псевдоимена для модулей, это называется api set schema.
Это нужно было из-за того, что некоторые функции стали менять свое расположение в зависимости от версии винды.
Т.е. "api-ms-win-crt-stdio-l1-1-0.dll" это имя не настоящего модуля, api- сигнализирует о необходимости разрешения этого имени до настоящего модуля на конкретном компьютере.
Стандартный виндовый загрузчик умеет это разрешать, а самописный лоадер, который ты используешь - нет.
Таким образом, начиная с определенной версии компилятора он стал вставлять не стандартные модули, а такие имена, для совместимости на новых версиях винды.
Документации по этой схеме не так много оффициальной, но есть куча реверса, например
.
Существует несколько версий схемы в зависимости от винды, для самописного загрузчика нужно реализовать все из них, и разрешать их имена прежде чем отправлять на загрузку при маппинге.