Итак, я пытаюсь запустить .exe на моем windows сервере, для которого требуется пользователь с указанными правами доступа c. К счастью, у меня есть эти права на сервере, и я могу прекрасно запустить исполняемый файл вручную.
Однако, когда я хочу запустить его из своего кода, являющегося прикладной программой. net core console API, я сталкиваюсь с проблемой: 'The handle is invalid'
.
Вот метод, в котором Im пытаясь добиться этого:
public void UpdateDataSets()
{
try
{
Process processStart = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo(@"PathToExecutable.exe");
startInfo.WindowStyle = ProcessWindowStyle.Normal;
startInfo.Arguments = $@"MyArguments";
startInfo.RedirectStandardOutput = true;
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.UserName = "MyUserName";
startInfo.Domain = "MyDomain";
startInfo.Password = new NetworkCredential("", "MyUserPassword").SecurePassword;
processStart.StartInfo = startInfo;
string textToRead;
using(Process process = Process.Start(startInfo))
{
textToRead = process.StandardOutput.ReadToEnd();
process.WaitForExit(20000); //time limit because maybe infinite, I dont know?
}
File.WriteAllText(@"StandardOutput.txt", textToRead);
}
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace.ToString());
}
}
Сначала я попытался с startInfo.Verb = "runas"
и startInfo.LoadUserProfile = true
перед жестким кодированием учетных данных моей активной директории, но я просто получил там другие ошибки.
Что я здесь не так делаю?