//
// Summary:
// Gets or sets a value indicating whether to use the operating system shell
// to start the process.
//
// Returns:
// true to use the shell when starting the process; otherwise, the process is
// created directly from the executable file. The default is true.
[DefaultValue(true)]
[MonitoringDescription("ProcessUseShellExecute")]
[NotifyParentProperty(true)]
public bool UseShellExecute { get; set; }
如果我們產生一個新的進程,我們什麼時候需要將UseShellExecute設置爲True?我們何時需要將UseShellExecute設置爲True?
偉大的東西,但是你寫的(有ShellExecute的),「它[你要求]無法重定向標準輸入/輸出/錯誤句柄「< - 肯定是不正確或不準確。即使useShellExecute設置爲true,雖然確實不能執行'processStartInfo.RedirectStandardOutput = true',但在我看來,仍然可以通過執行'process.Arguments =「cmd/c dir> c:\\ crp來重定向標準輸出\\ AA「'。同樣,從運行對話框中,你也可以執行'cmd/c dir> c:\ crp \ aa' – barlop 2016-04-24 22:51:58
,你說'UseShellExecute = false'即CreateProcess時,不會檢查路徑,但是即使在我做「UseShellExecute = false」,即假設沒有檢查路徑,然後process.FileName =「cmd.exe」的作品,所以它檢查c:\ windows \ system32。如果我將cmd.exe複製到c:\ windows並將其命名爲cmmmd.exe,那麼我會執行process1.FileName =「cmmmd.exe」,它可以檢查c:\ windows,因此它似乎正在檢查路徑,或者一些目錄。 – barlop 2016-04-24 23:29:27
MSDN文檔同意@barlop:「當UseShellExecute爲false時,FileName屬性可以是可執行文件的完全限定路徑,也可以是系統嘗試在PATH環境變量指定的文件夾中查找的簡單可執行文件名稱。」 – Bob 2016-08-18 12:05:02