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

3395
Bad Neighbor

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

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

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

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

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

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

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

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

3
Вам нужно использовать 64-битный установщик, если вы используете Windows 7 x64. Нет смысла устанавливать 32-битный клиент Oracle, когда 64-битный клиент точно такой же. Понизьте операционную систему до 32-битной, и у вас не будет этой проблемы Ramhound 11 лет назад 0
Я должен добавить, что это корпоративная среда, поэтому понижение рейтинга не вариант. 32-битный клиент Oracle - это только симптом. Проблема в том, что ПК не могут зарегистрировать 32-битные DLL. Bad Neighbor 11 лет назад 0
Если вы подозреваете, что Windows виновата, потратьте это время на ее переустановку. Ваша альтернативная стоимость становится выше, если вы пытаетесь это исправить. 11 лет назад 0

2 ответа на вопрос

1
Scott Chamberlain

The error code you got stands for ERROR_MOD_NOT_FOUND, some dependent dll is missing on your system that both of those two programs rely on.

One tool I have used a lot for finding problems like these is Dependency Walker, it analyze the dll or the ocx and tell you what other dll's it depends on.

If it can't find it by static analysis you will need to do it by dynamic analsys and "profiling" the program. I have only worked with exe's so I am not sure how you would run the dll for profiling, perhaps you need to load regsvr32 in dependency walker and launch it with the arguments to load your dll and it may pick it up that way.

Once you figure out the missing dll and you add it back in to the system everything should work.

0
Micah Armantrout

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

Как я прокомментировал Ramhound, невозможность установить клиент является лишь симптомом. Проблема в том, что ПК не могут зарегистрировать 32-битные DLL. Bad Neighbor 11 лет назад 0
@BadNeighbor - установка Windows явно повреждена, поэтому переустановите ее. Ramhound 11 лет назад 1