From d696e8acde1d7a9269a41f9164504c26bc8223dc Mon Sep 17 00:00:00 2001 From: DHR60 Date: Tue, 20 May 2025 19:08:34 +0800 Subject: [PATCH] Determine .exe suffix based on OS in GenRoutingDirectExe --- .../CoreConfig/CoreConfigSingboxService.cs | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs b/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs index 18bebed4..bc66a767 100644 --- a/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs +++ b/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs @@ -1048,28 +1048,33 @@ public class CoreConfigSingboxService private void GenRoutingDirectExe(out List lstDnsExe, out List lstDirectExe) { - lstDnsExe = new(); - lstDirectExe = new(); - var coreInfo = CoreInfoHandler.Instance.GetCoreInfo(); - foreach (var it in coreInfo) + var dnsExeSet = new HashSet(StringComparer.OrdinalIgnoreCase); + var directExeSet = new HashSet(StringComparer.OrdinalIgnoreCase); + + var coreInfoResult = CoreInfoHandler.Instance.GetCoreInfo(); + var fileSuffix = Utils.IsWindows() ? ".exe" : ""; + + foreach (var coreConfig in coreInfoResult) { - if (it.CoreType == ECoreType.v2rayN) + if (coreConfig.CoreType == ECoreType.v2rayN) { continue; } - foreach (var it2 in it.CoreExes) - { - if (!lstDnsExe.Contains(it2) && it.CoreType != ECoreType.sing_box) - { - lstDnsExe.Add($"{it2}.exe"); - } - if (!lstDirectExe.Contains(it2)) + foreach (var baseExeName in coreConfig.CoreExes) + { + var executableName = $"{baseExeName}{fileSuffix}"; + + if (coreConfig.CoreType != ECoreType.sing_box) { - lstDirectExe.Add($"{it2}.exe"); + dnsExeSet.Add(executableName); } + directExeSet.Add(executableName); } } + + lstDnsExe = new List(dnsExeSet); + lstDirectExe = new List(directExeSet); } private async Task GenRoutingUserRule(RulesItem item, List rules)