For example, Excel 2007 actually is a 32-bit application. One version in the “Framework” path, and the other in “Framework64” path.īasically it comes down to the bit-depth of the consuming application. NET framework comes with 2 versions of regasm.exe. 32-bit bit registry nodes and distinctly different than 64-bit registry nodes. This is what the regasm.exe utility does (writes to the registry). If you have any questions feel free to leave a comment and I will try to help if possible.Īctually, many of the COM problems that people think originate from the bit-depth of the system it was compiled on, turn out to actually be due to the way the COM object was registered.ĬOM object types are registered via registry keys. That’s it, your COM Object should now be accessible from a 64bit environment and can be used like a regular COM Object. No values are necessary to be added under this key. Create a new Key under HKey_Local_Machine\Software\Classes\AppID\Īgain the new key should be called the same as the COM object’s GUID.Under the new key you just added, add a new REG_SZ (string) Value, and call it DllSurrogate.The new key should be called the same as the com object GUID Add a new key under HKey_Classes_Root\Wow6432Node\AppID\.Name should be AppID and data should be the same COM object GUID you have just searched for Once located add a new REG_SZ (string) Value.Locate your COM object GUID under the HKey_Classes_Root\Wow6432Node\CLSID\. To do this, it involves a small number of simple registry hacks: However, this can be countered using dllhost as a surrogate for the 32bit COM object. Trying to access a 32bit COM in a 64bit environment will result in a class not registered error. It seems that by default 32bit COM objects are not usable in a 64bit environment. I needed to use a 32bit COM object in my 64bit application but alas that didn’t work. A while ago I ran into a problem while working on a 64bit application.
0 Comments
Leave a Reply. |