diff --git a/shadowsocks-csharp/Controller/Service/Sip003Plugin.cs b/shadowsocks-csharp/Controller/Service/Sip003Plugin.cs index ab6f5f254..e295ae723 100644 --- a/shadowsocks-csharp/Controller/Service/Sip003Plugin.cs +++ b/shadowsocks-csharp/Controller/Service/Sip003Plugin.cs @@ -100,7 +100,22 @@ public bool StartIfNeeded() _pluginProcess.StartInfo.Environment["SS_LOCAL_HOST"] = LocalEndPoint.Address.ToString(); _pluginProcess.StartInfo.Environment["SS_LOCAL_PORT"] = LocalEndPoint.Port.ToString(); _pluginProcess.StartInfo.Arguments = ExpandEnvironmentVariables(_pluginProcess.StartInfo.Arguments, _pluginProcess.StartInfo.EnvironmentVariables); - _pluginProcess.Start(); + try + { + _pluginProcess.Start(); + } + catch (System.ComponentModel.Win32Exception ex) + { + // do not use File.Exists(...), it can not handle the scenarios when the plugin file is in system environment path. + // https://docs.microsoft.com/en-us/windows/win32/seccrypto/common-hresult-values + //if ((uint)ex.ErrorCode == 0x80004005) + // https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/18d8fbe8-a967-4f1c-ae50-99ca8e491d2d + if (ex.NativeErrorCode == 0x00000002) + { + throw new FileNotFoundException(I18N.GetString("Cannot find the plugin program file"), _pluginProcess.StartInfo.FileName, ex); + } + throw new ApplicationException(I18N.GetString("Plugin Program"), ex); + } _pluginJob.AddProcess(_pluginProcess.Handle); _started = true; } diff --git a/shadowsocks-csharp/Data/i18n.csv b/shadowsocks-csharp/Data/i18n.csv index e99f8dbbd..4332dcf2e 100644 --- a/shadowsocks-csharp/Data/i18n.csv +++ b/shadowsocks-csharp/Data/i18n.csv @@ -187,6 +187,7 @@ Proxy handshake failed,代理握手失败,Proxy 交握失敗,プロキシ ハン Register hotkey failed,注册快捷键失败,註冊快速鍵失敗,ホットキーの登錄に失敗しました。 Cannot parse hotkey: {0},解析快捷键失败: {0},剖析快速鍵失敗: {0},ホットキーを解析できません: {0} "Timeout is invalid, it should not exceed {0}",超时无效,不应超过 {0},逾時無效,不應超過 {0},タイムアウト値が無効です。{0} 以下の値を指定して下さい。 +Cannot find the plugin program file,找不到插件程序文件,找不到外掛程式文件,, ,,, Operation failure,操作失败,, Auto save failed,自动保存失败,,