4

I've created a 32-bit and 64-bit version of my BHO (C++ code). The 32-bit version loads fine in IE 9 32-bit, but not the 64-bit version in IE 9 64 on WIndows 7.

I have double checked that:

  • the 64-bit DLL is indeed 64-bit code (dumpbin /headers on the DLL)
  • Registry entries HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects and HKEY_CLASSES_ROOT\Wow6432Node\CLSID are correct
  • my IE 64-bit can load 3rd party extension (2 BHO are actually loaded)

I don't know what to do at this point to debug the issue.

Note: I'm aware of Browser Helper Object doesnot get loaded in IE8 and other related questions about 64-bit BHO, but their problem and solutions are different

Community
  • 1
  • 1
Julien
  • 5,729
  • 4
  • 37
  • 60
  • 1
    As far as debugging goes, I'd fire up process monitor and capture all of the registry and file system accesses for the IE process. In particular, look for NOT FOUND results, in the hopes that you'll discover where the process is attempting to look in the registry or fs. – Lynn Crumbling Jan 03 '13 at 05:05
  • Is your DLL getting loaded at all? I.e., if you run under windbg or ntsd, and issue `sxe ld yourdll.dll` then continuing running, does that breakpoint get hit? If it does and then you get immediately unloaded, there is a dll dependency issue. If you never hit this, then your registration is wrong. If the former, are you liking to the static or dynamic crt? – i_am_jorf Jan 03 '13 at 16:45

1 Answers1

1

The problem was my misunderstanding of how to register a BHO for 64-bit. By calling the 32-bit or 64-bit version of regsvr32, the DLL will be registered as a 32-bit (Wow6432Node) or 64-bit. I don't have to worry about which registry to use inside my DLL, only to cal the right regsvr32.

Julien
  • 5,729
  • 4
  • 37
  • 60