Flash ocx "Класс не зарегистрирован" в Windows 7 x64 - PullRequest
3 голосов
/ 12 сентября 2009

У меня есть приложение WPF, использующее Flash10c.ocx, разработанное на 32-битной машине. Мне не нужно было регистрировать ocx на моем компьютере разработчика, я просто установил последнюю флэш-память, добавил ссылку и начал кодировать. При тестировании в 64-битной системе я получаю старый «класс не зарегистрирован», что, по-моему, означает, что мне нужно regsvr ocx. Можно ли просто скопировать 32-битный OCX (я уверен, что его 32-битный, поскольку он находится в C: \ Windows \ System32 \ Macromed в системе dev) в 64-битную систему и зарегистрировать его?

Обновление: regsvr32 / i flash10c.ocx из-за ошибки "Модуль flash10c.ocx las загружен, но вызов DllRegisterServer завершился ошибкой с кодом ошибки 0x80004005"

Обновление 2: я отказался от этого и решил запустить Flash только на 32-битных системах. Если у кого-то есть лучший ответ, я хотел бы услышать его, но я отмечаю текущее предложение как отвеченное, чтобы отдать должное усилиям.

Ответы [ 2 ]

4 голосов
/ 09 сентября 2010

Причина, по которой он не работает для вас, заключается в том, что ваше приложение WPF работает как 64-разрядное.

Приложение .NET может работать как 32-разрядное или 64-разрядное; и CLR JIT привязывает ваше приложение к любой архитектуре, на которой работает приложение - в данном случае 64-разрядное.

Кроме того, теперь вы хотите, чтобы ваше 64-битное приложение загружало 32-битную DLL. Это невозможно. 64-битный процесс может загружать только 64-битные библиотеки. 32-битный процесс может загружать только 32-битные библиотеки. Никакое количество проблем с регистрацией COM-объектов не изменит это; речь не идет о пропущенных записях реестра.

Adobe Flash поставляется только в виде 32-разрядной библиотеки DLL. У Adobe нет сейчас (и, надеюсь, никогда не будет) 64-разрядной версии.

Чтобы приложение WPF .NET загружало 32-битную флэш-библиотеку, оно должно выполняться как 32-битный процесс. В конфигурации сборки Visual Studio есть способ заставить ваше приложение .NET ориентироваться только на x86, а не Any CPU.

Выбор целей ЦП:

  • Любой процессор
  • x86
  • 64
  • 1022 * Itanium *

Flash, как бы то ни было, также не имеет версии Itanium.

См. StackOverflow: цель Visual Studio «Any CPU» для получения дополнительной информации о целевом процессоре.

3 голосов
/ 12 сентября 2009

Может быть, программа установки Flash предназначена только для 32-битной ОС. Следовательно, он не установлен должным образом на 64-разрядной машине. Ошибка означает, что вам нужно будет вручную зарегистрировать ocx, но он будет успешно зарегистрирован, это совершенно другой вопрос.

Изменить 1 : здесь Заявление Adobe о поддержке 64-битных систем ( нет ни одного ) (я предполагаю, что вы используете 64-битный браузер на 64-битный компьютер)

Редактировать 2 : еще одно сообщение на форуме о Flash в 64-битном окне с.

...