public static ProcessInfo Create( string applicationName, string arguments) { var startupInfo = new StartupInfo(); var sec = new SecurityAttributes(); sec.nLength = sec.Size; ProcessInformation processInfo; const ProcessCreationFlags CreateFlags = ProcessCreationFlags.CREATE_NO_WINDOW | ProcessCreationFlags.CREATE_SUSPENDED; if (true == CreateProcess( applicationName, arguments, ref sec, ref sec, false, (uint)CreateFlags, IntPtr.Zero, null, ref startupInfo, out processInfo)) { return new ProcessInfo( Process.GetProcessById(processInfo.dwProcessId), processInfo); } return null; }