It turns out this is a permissions problem.
Useing the registry monitor from www.sysinternal.com, and
regedt32.exe, I was able to pick up on which registry entries access
was denied, by giving read access to everyone ( although aspnet will
probably be better) on those entries (especially the ones from
HKCR\Typelib and HKCR\CLSID), everything works fine.
or you can have a look at
http://www.eggheadcafe.com/articles/20021012.asp
and use impersonation instead.
(First get the code to work in a winforms app, then you'll know that
all that's left to do is to give the correct access)
Remember to ensure that you're dcomcnfg permissions are also correct.