Глючат системные библиотеки
От: PanychY  
Дата: 21.12.16 14:16
Оценка:
Приветствую

Есть система 8.1 Enterprise(обновлено из 8 Enterprise).
Всё вроде работало но периодический напарываюсь на приложения которые тупо не работают. Вскрытие показывает что случается это по такому странному поводу:
1. Одна из прикладных DLL приложения(foo.dll) зависит от системных библиотек user32.dll kernel32.dll advapi32.dll msvcrt.dll (ничего необычного).
2. В своем тестовом приложении пытаюсь делать LoadLibraryW("foo.dll") получаю NULL GetLastError() = 126(MODULE_NOT_FOUND) O_o
3. Вооружаюсь DependencyWalker-ом, смотрю на foo.dll, и что я вижу:
FOO.DLL
 + USER32.DLL
 | + API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL (не найден модуль)
 | + API-MS-WIN-CORE-PRIVATEPROFILE-L1-1-1.DLL (не найден модуль)
 + ADVAPI32.DLL
   + API-MS-WIN-SERVICE-PRIVATE-L1-1-1.DLL (не найден модуль)

Вот тут у меня ступор: как не найдено? Часть системных компонент куда делось? Пошел искать руками. Нашел кучу подобных файлов %systemroot%\system32 но пациентов среди них не оказалось, оказались братья в имени которых в конце -L1-1-0 вместо -L1-1-1. Пошел искать дальше. Пациенты нашлись в %systemroot%\system32\downlevel. Но система их не видит.
Вопрос: что не так?
Ладно, попробовал "исправить" путем прописывания %systemroot%\system32\downlevel в PATH. Лучше не стало. DepWalker теперь находит модули, но матерится на отсутствующие символы в них.
Microsoft Redistributable for Visual C++ 20xx ставил все какие мог — не помогало.
Пробовал запускать тестовое приложения в различных режимах совместимости(8, 7, Vista) — ноль на массу.

Кто знает как лечить? (без переустановки) Надо работать с этими модулями программно. Да и если на клиенте такая фигня случится, хочется знать что крутить.
winapi dll
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.