Windows 7 64bit не зарегистрирует 32-битную DLL

Я пытаюсь установить 32-битный клиент Oracle на нескольких компьютерах с Windows 7. Эта версия требуется для программного обеспечения клиента. Я успешно установил его примерно на дюжине ПК, используя один и тот же установщик, но две машины отказываются регистрировать DLL. Два компьютера разных марок и моделей. Я был в состоянии установить это программное обеспечение в прошлом на этих моделях. Это ошибка, которую выдает установщик:

Ошибка при установке

Файл копируется в место, указанное выше. Если я решу игнорировать ошибку и вручную зарегистрировать ее позже, я получу следующую ошибку:

Ошибка во время regsvr32

Эта ошибка возвращается, использую ли я 32-битную (syswow64) или 64-битную версию regsvr32. Командная строка запускается с правами администратора, а ID, с которым я вошел в ПК, - это администратор. Я попытался скопировать файл в папку syswow64, но я получаю ту же ошибку. Этот же установщик работает на других ПК.

Чтобы еще больше усложнить проблему, один из двух компьютеров также не зарегистрирует файл OCX из другого 32-битного установщика:

Вторая ошибка установщика

Оба компьютера являются относительно новыми и имеют стандартное программное обеспечение. Мы используем MS Forefront для безопасности, но отключение, которое не изменило поведение. Что мне не хватает?

2 ответа

Полученный код ошибки означает ERROR_MOD_NOT_FOUNDВ вашей системе отсутствуют некоторые зависимые библиотеки DLL, на которые полагаются обе эти программы.

Одним из инструментов, который я часто использовал для поиска подобных проблем, является Dependency Walker, он анализирует DLL или OCX и сообщает вам, от каких других DLL это зависит.

Если он не может найти его с помощью статического анализа, вам нужно будет сделать это с помощью динамического анализа и "профилирования" программы. Я работал только с exe, поэтому я не уверен, как вы будете запускать dll для профилирования, возможно, вам нужно загрузить regsvr32 в ходьбе зависимостей и запустите его с аргументами для загрузки вашей DLL, и он может подобрать его таким образом.

Как только вы обнаружите отсутствующую dll и добавите ее обратно в систему, все должно работать.

Вы можете просто скачать 64-битный клиент

Другие вопросы по тегам