Как запустить. Net Основной процесс как специфицированный c пользователь? - PullRequest
1 голос
/ 27 марта 2020

Итак, я пытаюсь запустить .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 перед жестким кодированием учетных данных моей активной директории, но я просто получил там другие ошибки.

Что я здесь не так делаю?

...