簡體   English   中英

當UseShellExecute == false時,如何在C#進程上強制輸出標准輸出?

[英]How do I force standard output on a C# Process when UseShellExecute == false?

我正在使用以下代碼從C#運行進程;

private static void ExecuteShellCMD(string workingDir, string commandWithArgs, bool bWait = true)
{
    ProcessStartInfo info = new ProcessStartInfo();
    info.Verb = "runas";
    info.FileName = "cmd.exe";
    info.WorkingDirectory = workingDir;
    info.Arguments = "/C " + commandWithArgs;
    info.UseShellExecute = false;
    using (Process myProcess = Process.Start(info))
    {
        if (bWait)
        {
            myProcess.WaitForExit();
        }

        int ExitCode = myProcess.ExitCode;

        //Log exit code here.
    }
}

它會加載提升的命令窗口並執行我傳遞的代碼/ bat文件,但不會在控制台中記錄任何內容。 在其他計算機上這似乎並不一致,並且過去在我的計算機上也可以使用,我想知道是否有人對我如何能夠始終如一地執行此過程有任何想法,只是將日志打印到該過程創建的命令窗口中。

如果設置UseShellExecute = true我可以看到日志,但是如果不接受不希望出現的海拔提示,就不能使用Verb

我嘗試過在網上尋找解決方案,並且我知道可以使用其他設置來重定向輸出。 關於此主題的大多數問題和教程似乎都涉及將輸出重定向到其他地方,但是我希望能夠在命令窗口本身中跟蹤進度。

也許我錯過了命令行參數或類似的東西?

原來這實際上是Unity Hub中的錯誤。 流程和輸出工作正常,但是當從Unity Hub啟動的Unity實例運行時,它控制了輸出,但沒有釋放它。 只需直接啟動Unity即可解決此問題,並且已經向Unity中心提交了錯誤報告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM