Add reference to Interop.QuickTest.dll in your project/solution - QTP 11, and most likely the last 2 or so versions
The below code is running for many months in production environment
qtApp = new QuickTest.Application();
qtApp.Launch();
qtApp.Visible = true;
qtApp.Options.Run.RunMode = "Normal";
qtApp.Options.Run.StepExecutionDelay = 250;
qtApp.Options.Run.ViewResults = false;
string scriptPath = uncPathToScript;
qtApp.Open(scriptPath, true, false);
QuickTest.Test qtTest = qtApp.Test;
qtTest.Settings.Run.OnError = "NextStep";
QuickTest.RunResultsOptions qtRRO = new QuickTest.RunResultsOptions();
string dt = DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss");
dt = dt.Replace("/", "-");
dt = dt.Replace(":", "-");
dt = dt.Replace(" ", "-");
string reportDirectory = uncPathToScript.Substring(uncPathToScript.LastIndexOf("\\") + 1);
reportFilePath = uncPathToScript + "\\" + reportDirectory + "_" + dt;
System.IO.Directory.CreateDirectory(reportFilePath);
qtRRO.ResultsLocation = reportFilePath;
qtTest.Run(qtRRO, true, null);
qtTest.Close();
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(qtTest);
qtTest = null;
qtApp.Quit();
GC.Collect();
GC.WaitForPendingFinalizers();
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(qtApp);
qtApp = null;