diff --git a/v2rayN/ServiceLib/Manager/CoreAdminManager.cs b/v2rayN/ServiceLib/Manager/CoreAdminManager.cs index 1bc0f0ca..97f5cc6d 100644 --- a/v2rayN/ServiceLib/Manager/CoreAdminManager.cs +++ b/v2rayN/ServiceLib/Manager/CoreAdminManager.cs @@ -68,19 +68,19 @@ public class CoreAdminManager try { - var shellFileName = Utils.IsMacOS() ? Global.KillAsSudoOSXShellFileName : Global.KillAsSudoLinuxShellFileName; - var shFilePath = await FileUtils.CreateLinuxShellFile("kill_as_sudo.sh", EmbedUtils.GetEmbedText(shellFileName), true); - if (shFilePath.Contains(' ')) + if (Utils.IsLinux()) { - shFilePath = shFilePath.AppendQuotes(); + var procService = new ProcessService( + fileName: "/usr/bin/sudo", + arguments: "-u#785 /usr/bin/pkill --uid 785 --exact sing-box", + workingDirectory: Utils.GetBinConfigPath(), + displayLog: true, + redirectInput: false, + environmentVars: null, + updateFunc: null + ); + await procService.StartAsync(AppManager.Instance.LinuxSudoPwd); } - var arg = new List() { "-c", $"sudo -S {shFilePath} {_linuxSudoPid}" }; - var result = await Cli.Wrap(Global.LinuxBash) - .WithArguments(arg) - .WithStandardInputPipe(PipeSource.FromString(AppManager.Instance.LinuxSudoPwd)) - .ExecuteBufferedAsync(); - - await UpdateFunc(false, result.StandardOutput.ToString()); } catch (Exception ex) { diff --git a/v2rayN/ServiceLib/Manager/CoreManager.cs b/v2rayN/ServiceLib/Manager/CoreManager.cs index db382685..1d5ccb39 100644 --- a/v2rayN/ServiceLib/Manager/CoreManager.cs +++ b/v2rayN/ServiceLib/Manager/CoreManager.cs @@ -150,11 +150,8 @@ public class CoreManager { try { - if (_linuxSudo) - { - await CoreAdminManager.Instance.KillProcessAsLinuxSudo(); - _linuxSudo = false; - } + await CoreAdminManager.Instance.KillProcessAsLinuxSudo(); + _linuxSudo = false; if (_processService != null) {