diff --git a/v2rayN/v2rayUpgrade/Program.cs b/v2rayN/v2rayUpgrade/Program.cs
index ab351ec5..0d057a96 100644
--- a/v2rayN/v2rayUpgrade/Program.cs
+++ b/v2rayN/v2rayUpgrade/Program.cs
@@ -1,5 +1,6 @@
 using System.Diagnostics;
 using System.IO.Compression;
+using System.Runtime.InteropServices;
 using System.Text;
 
 namespace v2rayUpgrade
@@ -26,15 +27,15 @@ namespace v2rayUpgrade
             Console.WriteLine(fileName);
             Console.WriteLine("In progress, please wait...(正在进行中,请等待)");
 
-            Thread.Sleep(10000);
+            Thread.Sleep(5000);
 
             try
             {
-                Process[] existing = Process.GetProcessesByName("v2rayN");
+                Process[] existing = Process.GetProcessesByName(V2rayN());
                 foreach (Process p in existing)
                 {
                     var path = p.MainModule?.FileName ?? "";
-                    if (path.StartsWith(GetPath("v2rayN")))
+                    if (path.StartsWith(GetPath(V2rayN())))
                     {
                         p.Kill();
                         p.WaitForExit(100);
@@ -112,7 +113,16 @@ namespace v2rayUpgrade
             }
 
             Console.WriteLine("Start v2rayN, please wait...(正在重启,请等待)");
-            Process.Start("v2rayN");
+            Thread.Sleep(3000);
+            Process process = new()
+            {
+                StartInfo = new()
+                {
+                    FileName = V2rayN(),
+                    WorkingDirectory = StartupPath()
+                }
+            };
+            process.Start();
         }
 
         public static string GetExePath()
@@ -134,5 +144,20 @@ namespace v2rayUpgrade
             }
             return Path.Combine(startupPath, fileName);
         }
+
+        private static string V2rayN()
+        {
+            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+            {
+                if (File.Exists(GetPath("v2rayN.exe")))
+                    return "v2rayN";
+                else
+                    return "v2rayN.Desktop";
+            }
+            else
+            {
+                return "v2rayN.Desktop";
+            }
+        }
     }
 }
\ No newline at end of file