I think it might have something to do with the way it is registered. If you look under the CLSID for your COM Object, you find that the Location of the COM Object is held under InprocServer32 (if a dll) else LocalServer32 (if exe). When it is a 16Bit app it might need and extra register entry InprocServer or LocalServer. This is only a guess....