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