Q:

CreateCOMObject doesn't work on home edition

I can call an application named "PinPoint.Plate" with Visual Basic, Python and Mathematica version 8 but not with version 9. I can still call Excel though. How can I fix this? This is what I did:
Needs["NETLink`"]
InstallNET[];
NETLink[];
p = CreateCOMObject["PinPoint.Plate"]

gives the error:
 (* CreateCOMObject::netexcptn: A .NET exception occurred: System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {9B7024E3-BD35-11D2-8EE4-0080C70A9C3D} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
   at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
   at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache)
   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache)
   at System.Activator.CreateInstance(Type type, Boolean nonPublic)
   at Wolfram.NETLink.Internal.CallPacketHandler.createCOM(KernelLinkImpl ml). >> *)

A:

This is apparently a 32-bit COM object, so you need to force .NET/Link to run in 32-bit mode:
Needs["NETLink`"];
ReinstallNET["Force32Bit" -> True];
p = CreateCOMObject["PinPoint.Plate"]

Generally, the only time you need to worry about bit-ness issues is when you are calling non-.NET code, such as a 32-bit DLL via DefineDLLFunction or, as here, a 32-bit COM object.

