I do have one other question for you. What is the best way to know if the registering or unregistering failed? The calls to LoadLibrary and GetProcAddress return 0 when I feed them an invalid path or a non existent DLL so I assume is safe to assume an error if either of those return 0?. Or is there a better way to capture a failure that you know of?

Also, by using WoF's method my app is more dynamic and I wont have to worry or make any assumptions about where regsvr32 is or what it "might have done" if I shelled it. I can get return values after my attempts to registering or unregistering giving my app more knowledge about what happened.