У меня есть приложение (x64), которое использует стороннюю среду выполнения, и приложение испытывает проблемы с загрузкой этой среды выполнения через свои библиотеки DLL (также x64).

Установщик Windows пытается зарегистрировать эти библиотеки DLL (предположительно по той же причине), и поэтому я протестировал регистрацию библиотек DLL с помощью regsvr32 и обнаружил интересное поведение. Я могу заставить DLL успешно регистрироваться и отменять регистрацию с помощью regsvr32 (я могу найти их в реестре в разделе CLSIDs впоследствии), но только если я выполняю regsvr32 из папки, в которой хранятся DLL. Даже если я использую относительные пути (например, ....\outer\dlls\binary.dll) из папки, в которой они хранятся, они все равно успешно регистрируются. Я пробовал как с полным, так и с частичным путями, примерно от 4 до 1 уровня выше в пути, и все не удалось.

Ошибка, с которой он всегда возвращается, - «Неверный доступ к ячейке памяти». Что достаточно расплывчато, чтобы было очень трудно найти источник.

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

0