Я пытаюсь выполнить командный файл, используя класс Process.Этот код находится в середине большей части кода, где я использую LogonUser () и WindowsIdentity.Impersonate () для олицетворения локальной учетной записи администратора ПК.
Я пытался запустить пакетный файл в рамках процесса, не добавляя учетные данные в ProcessStartInfo, но при этом способе пакетный файл завершился сбоем без ошибок - никаких ошибок не возникало, и ожидаемый вывод из пакетного файла никогдабыл возвращен (я читаю stderr и stdout асинхронно, fwiw).
Затем я добавил учетные данные в ProcessStartInfo, но теперь я получаю ошибку «Доступ запрещен», если я сначала не вызываю WindowsImpersonationContext.Undo ()и ошибка «Ошибка входа в систему: неизвестное имя пользователя или неправильный пароль», если я вызываю .Undo () перед Process.Start ().Я трижды проверил правильность имени пользователя / пароля / домена для нескольких учетных записей.
Если в моем коде нет вызовов LogonUser () или WindowsIdentity.Impersonate () (и учетных данных в ProcessStartInfo нет), то яУ меня нет проблем с выполнением командного файла и выводом из захваченного командного файла.
Я могу успешно запустить командный файл с рабочего стола как локального администратора или как произвольная локальная учетная запись пользователя.Я вижу, что его разрешения показывают, что он должен быть читаемым / исполняемым из учетных записей, которые я пытаюсь запустить.Это действительно довольно глупо;любая помощь приветствуется.