Как заставить объект COM ActiveX работать в IE 64 бит? - PullRequest
2 голосов
/ 29 апреля 2010

У меня есть COM-объект, встроенный в страницу ASP.NET с использованием <object classid="clsid:XXX...">. Он работает в IE 32-битной, но не работает в IE 64-битной - не может получить доступ к его функциям. Там нет сообщений об ошибках, нет журналов событий, где я могу получить некоторую информацию.

DLL находится в C #, включает видимый класс COM, скомпилирован для любого процессора (хотя я также пробовал x86) и зарегистрирован во время установки клиента, выполнив regasm. Это создает ключи реестра, ну все работает отлично, кроме IE 64. Я искал в интернете проблему или, по крайней мере, некоторые рекомендации и ничего не нашел.

Я получил ответ на другом форуме, что-то про _MERGE_PROXYSTUB (я полагаю, это определение препроцессора?) И раздел реестра ProxyStubClsid32, но не очень подробный. Что ж, я снова искал, ничего не нашел и экспериментировал: перестраивался с определенным _MERGE_PROXYSTUB, создавал ключи ProxyStubClsid32 везде, но безрезультатно.

Какие могут быть хотя бы возможные решения или точки зрения? Может быть, есть хотя бы способ получить логи о том, почему IE 64 не может получить к нему доступ?

1 Ответ

3 голосов
/ 29 апреля 2010

AnyCPU будет работать в 64-битной программе, но вы должны зарегистрировать его по-другому. Используйте 64-битную версию Regasm.exe, вы найдете ее в каталоге c: \ windows \ microsoft.net \ framework64. Убедитесь, что вы получаете ключи в HKLM \ Software \ Classes \ CLSID, а не в HKLM \ Software \ Wow6432Node \ Classes \ CLSID.

...