I recently spent several hours trying to figure out why I kept getting the error result MK_E_UNAVAILABLE when trying to connect a sample application to a running instance of TurboCAD. The application would connect just fine if I ran the compiled app manually, but it would give me the "unavailable" result if I tried to run it from within Visual Studio.
It turns out I was running Visual Studio with the "Run as Administrator" flag, (as Microsoft suggests), but I was not running TurboCAD with the same flag. Under Windows Vista, generally a process with a high integrity level cannot interact with a process running at a lower integrity level.
There are two workarounds for this problem, should you encounter it:
1) Don't run Visual Studio "As Administrator"
2) Run both Visual Studio and TurboCAD (or whatever other COM server you are trying to connect to) "As Administrator"
Hopefully this tip will spare you a bit of unnecessary frustration, though it only scratches the surface of Vista and Integrity Levels.