问题
I have a COM object embeded in ASP.NET page using <object classid="clsid:XXX...">
. It works in IE 32 bit, but does not work in IE 64 bit - can't access its functions. There are no error messages, no event logs where I can get some information.
The dll is in C#, includes COM visible class, compiled for Any CPU (though I also tried x86), and registered during client installation by executing regasm. This creates registry keys, well everything works fine except for IE 64. I searched internet about the issue or at least some guidlines and didn't find anything.
I received an answer on another forum, something about _MERGE_PROXYSTUB (I guess it's preprocessor definition?) and ProxyStubClsid32 registry key, but not very detailed. Well, I searched again, didn't find much, and experimented: rebuilt with _MERGE_PROXYSTUB defined, created ProxyStubClsid32 keys everywhere, but with no result.
What can be at least possible solutions or points to look at? Maybe there is a way at least to get the logs about why IE 64 can't access it?
回答1:
AnyCPU will work in a 64-bit program, but you have to register it differently. Use the 64-bit version of Regasm.exe, you'll find it in c:\windows\microsoft.net\framework64. Verify that you get the keys in HKLM\Software\Classes\CLSID, not in HKLM\Software\Wow6432Node\Classes\CLSID.
来源:https://stackoverflow.com/questions/2736424/how-to-make-com-activex-object-work-in-ie-64-bit