If I open a notebook in Mathematica, and type "nb=NotebookCreate", it creates a new notebook, like we would expect.
However, if I try the same command from within C#, it fails:
IKernelLink ml = MathLinkFactory.CreateKernelLink();
string cmd2 = @"nb = NotebookCreate";
string result = ml.EvaluateToOutputForm(cmd2, 0);
// result is now "$Failed".
Note that if I pass in "2+2", it returns "4", which proves the link to the Mathematica kernel is working perfectly well.