2013-08-20 9 views
1

Если вы вызываете функцию CreateProcess WinAPI (http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx), вы можете выбрать, должен ли новый процесс наследовать ErrorMode вызывающего.Выполняется ли процесс C# Process.Start() наследует ErrorMode?

Мой вопрос в том, что процесс начался с процесса C# Process.Start (http://msdn.microsoft.com/en-us/library/e8zac0ca.aspx) наследует ErrorMode вызывающего, если он получает ErrorMode по умолчанию?

Я не могу найти это в документации на MSDN ...

+1

Где написано, что 'вы можете выбрать, должен ли новый процесс наследовать ErrorMode вызывающего .'? Я этого не нашел. – xanatos

+0

Функция CreateProcess принимает аргумент 'dwCreationFlags' (http://msdn.microsoft.com/en-us/library/windows/desktop/ms684863(v=vs.85).aspx), в котором' CREATE_DEFAULT_ERROR_MODE' может быть установлен или нет. – Findus

ответ

1

Если смотреть с ReSharper/ilspy и/или вы смотрите источники .NET вы увидите, что в Process.StartWithCreateProcess(ProcessStartInfo startInfo) все в магия случается.

num2 - это переменная, содержащая dwCreationFlags. Ваш флаг нигде не отображается. Иногда StartWithCreateProcess устанавливает 0x8000000 (CREATE_NO_WINDOW) (если установлен параметр CreateNoWindow) и флаги 0x400 (CREATE_UNICODE_ENVIRONMENT) (если система основана на NT), но это все.

+0

Я не уверен, если вы ответили на вопрос. Вы имеете в виду, что только эти два флага могут быть установлены 'StartInfo'? Я знаю, что я не могу выбрать значение 'CREATE_DEFAULT_ERROR_MODE' при использовании' Process.Start() ', мне интересно, установлено ли оно или нет? Или вы имеете в виду, что он не установлен? – Findus

+0

@Findus Я говорю вам, что в коде «Process.Start» эти флаги не установлены, и единственными флагами, которые он использует (иногда), являются эти два. – xanatos

+0

Очень хорошо, спасибо за ответ! – Findus

Смежные вопросы