2013-08-20 134 views
1

如果您調用WinAPI函數CreateProcess(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'設置?我知道在使用Process.Start()時我不能選擇'CREATE_DEFAULT_ERROR_MODE'的值,我想知道它是否被設置?或者你的意思是它沒有設置? – Findus

+0

@Findus我告訴你,在Process.Start的代碼中沒有設置這些標誌,它使用的唯一標誌(有時)是那兩個。 – xanatos

+0

非常好,那麼謝謝你的答案! – Findus