Ошибка запуска процесса .NET с использованием учетных данных (дескриптор недействителен)

StackOverflow https://stackoverflow.com/questions/628191

  •  06-07-2019
  •  | 
  •  

Вопрос

У меня есть приложение Windows Form, которое предоставляет имя пользователя, домен и пароль для StartInfo, и оно выдает следующее:

System.ComponentModel.Win32Exception: Неверный дескриптор    в System.Diagnostics.Process.StartWithCreateProcess (ProcessStartInfo startInfo)    в System.Diagnostics.Process.Start ()

Когда я разрешаю текущим пользователям учетные данные по умолчанию, я не получаю такой ошибки, и процесс, который я запускаю, работает настолько, что ему не нужно использовать учетные данные (кредиты необходимы для сопоставления диска в скрипте MSBuild ). Вот код, который заполняет начальную информацию:

Process p = new Process();
ProcessStartInfo si = new ProcessStartInfo(buildApp, buildArgs);
si.WorkingDirectory = msBuildWorkingDir;
si.UserName = txtUserName.Text;
char[] psw = txtPassword.Text.ToCharArray();
SecureString ss = new SecureString();
for (int x = 0; x < psw.Length; x++)
{
    ss.AppendChar(psw[x]);
}
si.Password = ss;
si.Domain = "ABC";
si.RedirectStandardOutput = true;
si.UseShellExecute = false;
si.WorkingDirectory = txtWorkingDir.Text;
p.StartInfo = si;
p.Start();

Дело не в том, что пользователь / psw не соответствует, потому что, когда я предоставляю, например, неверный psw, он его ловит. Итак, это «неверный дескриптор» что происходит после передачи кредита. Любые идеи о том, что я мог бы опустить или испортить?

Это было полезно?

Решение

Вы должны перенаправить ввод, ошибку и вывод.

например:

ProcessStartInfo info = new ProcessStartInfo("cmd.exe");
 info.UseShellExecute = false;
 info.RedirectStandardInput = true;
 info.RedirectStandardError = true;
 info.RedirectStandardOutput = true;
 info.UserName = dialog.User;

 using (Process install = Process.Start(info)) {
       string output = install.StandardOutput.ReadToEnd();
       install.WaitForExit();
       // Do something with you output data       
    Console.WriteLine(output);
 }

Также Microsoft сообщила, что сообщение об ошибке должно быть прочитано, " Невозможно перенаправить ввод. " (раньше имелась ссылка, но она больше не работала)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top