как расследовать сбой Process.Start ()? - PullRequest
0 голосов
/ 02 февраля 2019

надеюсь, что это правильные вопросы.
Это устаревший код, который я поддерживаю.
Службы Windows (вход в систему как SYSTEM или «выделенный пользователь службы») выполнят переносимый исполняемый файл python, запуск python.exeкод (.pyc) с дополнительными параметрами.

Вопрос:
Нет исключения из Process.Start () и не возвращается исключение, есть ли способ выяснить, почему?Пожалуйста, не вставляйте документацию MSDN, я прочитал ее достаточно раз.
Я пытаюсь запустить python с UseShellExecute true / false, не имеет значения, не работает.

Код службы Windows C #:

var processInfo = new ProcessStartInfo(_pythonExePath/*path to python.exe*/, exeParams/*path to pyc, and additionl params*/)
{
    WorkingDirectory = workingDirectory
};
var process = new Process
{
    StartInfo = processStartInfo,
    EnableRaisingEvents = true
};
process.Start();

Когда я выполнял python.exe с аргументами из командной строки (как «пользователь выделенного сервиса», а также с psexecкак СИСТЕМА), это сработало.

Вызов GetLastError () или Marshal.GetLastWin32Error () вернул 0.
В Event Viewer (Приложение, Система, Безопасность) ничего не было

Я зафиксировал с помощью монитора процесса 2 выполнениятот, который работал, тот, который не работал.оба выполнения показывают, что python.exe запущен, и, конечно, после этого происходят тысячи звонков ... что я должен исследовать?Как я могу увидеть, если политика безопасности заблокировала мой exe?

Спасибо.

1 Ответ

0 голосов
/ 02 февраля 2019

Проверьте документы на возвращаемое значение Process.Start

true, если ресурс процесса запущен;false, если не запущен новый ресурс процесса (например, если существующий процесс используется повторно).

Таким образом, false не обязательно означает, что в Process.Start произошла ошибка;если произошла ошибка, она должна была выдать исключение, и она не просто установит код ошибки и молча перейдет на следующую строку.

Как предложил Гарри в комментарии, используя ProcessМонитор для монитора python.exe - хорошее начало.

...