Under Vista you might get this error when you create a COM component (800700EA ERROR_MORE_DATA). Most likely the cause of your problem is that the registry for your CLSID is messed up. You can check by starting RegEdit and navigating to the CLSID. In the regular string presentation, you won't see a difference; looking at it through your binary binoculars (right click ThreadingModel and select Modify Binary data) will show you this:
You can see that there is some garbage after "apartment". Under Vista the whole string is read and if it doesn't match the above error is returned. You need to fix your registration code so that the string length matches the actual string.