diff --git a/v2rayN/v2rayN/Handler/CoreHandler.cs b/v2rayN/v2rayN/Handler/CoreHandler.cs index 34c41954c3..cf6fca7881 100644 --- a/v2rayN/v2rayN/Handler/CoreHandler.cs +++ b/v2rayN/v2rayN/Handler/CoreHandler.cs @@ -156,7 +156,7 @@ public void CoreStopPid(int pid) #region Private - private string CoreFindexe(CoreInfo coreInfo) + private string CoreFindExe(CoreInfo coreInfo) { string fileName = string.Empty; foreach (string name in coreInfo.coreExes) @@ -266,7 +266,7 @@ private void ShowMsg(bool updateToTrayTooltip, string msg) { try { - string fileName = CoreFindexe(coreInfo); + string fileName = CoreFindExe(coreInfo); if (Utils.IsNullOrEmpty(fileName)) { return null; @@ -286,6 +286,8 @@ private void ShowMsg(bool updateToTrayTooltip, string msg) StandardErrorEncoding = displayLog ? Encoding.UTF8 : null, } }; + var startUpErrorMessage = new StringBuilder(); + var startUpSuccessful = false; if (displayLog) { proc.OutputDataReceived += (sender, e) => @@ -302,6 +304,11 @@ private void ShowMsg(bool updateToTrayTooltip, string msg) { string msg = e.Data + Environment.NewLine; update(false, msg); + + if (!startUpSuccessful) + { + startUpErrorMessage.Append(msg); + } } }; } @@ -314,7 +321,12 @@ private void ShowMsg(bool updateToTrayTooltip, string msg) if (proc.WaitForExit(1000)) { - throw new Exception(displayLog ? proc.StandardError.ReadToEnd() : "启动进程失败并退出 (Failed to start the process and exited)"); + proc.CancelErrorRead(); + throw new Exception(displayLog ? startUpErrorMessage.ToString() : "启动进程失败并退出 (Failed to start the process and exited)"); + } + else + { + startUpSuccessful = true; } LazyConfig.Instance.AddProcess(proc.Handle);