public Task <Process> Launch(LaunchOptions options) { _logger.LogInformation($"Launching app: '{options.FilePath}' using credentials for: '{options.Domain}'"); StartUpInfo startupInfo = new StartUpInfo(); startupInfo.cb = Marshal.SizeOf(startupInfo); startupInfo.lpTitle = null; startupInfo.dwFlags = (int)StartUpInfoFlags.UseCountChars; startupInfo.dwYCountChars = 50; var workingDirectory = !string.IsNullOrWhiteSpace(options.WorkingDirectory) ? options.WorkingDirectory : Path.GetDirectoryName(options.FilePath); var password = _cipherService.Decrypt(options.Password); var process = RunAs.StartProcess( userName: options.UserName, domain: options.Domain, password: password, logonFlags: RunAs.LogonFlags.NetworkCredentialsOnly, applicationName: null, commandLine: options.FilePath, creationFlags: RunAs.CreationFlags.NewConsole, environment: IntPtr.Zero, currentDirectory: workingDirectory, startupInfo: ref startupInfo, processInfo: out _ ); return(Task.FromResult(process)); }