diff --git a/v2rayN/ServiceLib/Global.cs b/v2rayN/ServiceLib/Global.cs
index 73108a58..8d1cdc2f 100644
--- a/v2rayN/ServiceLib/Global.cs
+++ b/v2rayN/ServiceLib/Global.cs
@@ -115,11 +115,13 @@
         };
 
         public static readonly List<string> GeoFilesSources = new() {
+            "",
             GeoUrl,
             @"https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/{0}.dat",
         };
 
         public static readonly List<string> SingboxRulesetSources = new() {
+            "",
             SingboxRulesetUrl,
             @"https://raw.githubusercontent.com/runetfreedom/russia-v2ray-rules-dat/refs/heads/release/sing-box/rule-set-{0}/{1}.srs",
         };
diff --git a/v2rayN/ServiceLib/Handler/AppHandler.cs b/v2rayN/ServiceLib/Handler/AppHandler.cs
index 5f6ab3af..b04870ad 100644
--- a/v2rayN/ServiceLib/Handler/AppHandler.cs
+++ b/v2rayN/ServiceLib/Handler/AppHandler.cs
@@ -44,10 +44,6 @@
 
         #region Init
 
-        public AppHandler()
-        {
-        }
-
         public bool InitApp()
         {
             if (ConfigHandler.LoadConfig(ref _config) != 0)
@@ -61,6 +57,13 @@
             {
                 Environment.SetEnvironmentVariable("DOTNET_EnableWriteXorExecute", "0", EnvironmentVariableTarget.User);
             }
+
+            SQLiteHelper.Instance.CreateTable<SubItem>();
+            SQLiteHelper.Instance.CreateTable<ProfileItem>();
+            SQLiteHelper.Instance.CreateTable<ServerStatItem>();
+            SQLiteHelper.Instance.CreateTable<RoutingItem>();
+            SQLiteHelper.Instance.CreateTable<ProfileExItem>();
+            SQLiteHelper.Instance.CreateTable<DNSItem>();
             return true;
         }
 
@@ -72,13 +75,6 @@
             Logging.SaveLog($"{Environment.OSVersion} - {(Environment.Is64BitOperatingSystem ? 64 : 32)}");
             Logging.ClearLogs();
 
-            SQLiteHelper.Instance.CreateTable<SubItem>();
-            SQLiteHelper.Instance.CreateTable<ProfileItem>();
-            SQLiteHelper.Instance.CreateTable<ServerStatItem>();
-            SQLiteHelper.Instance.CreateTable<RoutingItem>();
-            SQLiteHelper.Instance.CreateTable<ProfileExItem>();
-            SQLiteHelper.Instance.CreateTable<DNSItem>();
-
             return true;
         }
 
diff --git a/v2rayN/ServiceLib/Handler/SysProxy/SysProxyHandler.cs b/v2rayN/ServiceLib/Handler/SysProxy/SysProxyHandler.cs
index 98220cc0..54bfec06 100644
--- a/v2rayN/ServiceLib/Handler/SysProxy/SysProxyHandler.cs
+++ b/v2rayN/ServiceLib/Handler/SysProxy/SysProxyHandler.cs
@@ -17,67 +17,59 @@ namespace ServiceLib.Handler.SysProxy
             {
                 var port = AppHandler.Instance.GetLocalPort(EInboundProtocol.http);
                 var portSocks = AppHandler.Instance.GetLocalPort(EInboundProtocol.socks);
-                var portPac = AppHandler.Instance.GetLocalPort(EInboundProtocol.pac);
                 if (port <= 0)
                 {
                     return false;
                 }
-                if (type == ESysProxyType.ForcedChange)
+                switch (type)
                 {
-                    if (Utils.IsWindows())
-                    {
-                        var strExceptions = "";
-                        if (config.systemProxyItem.notProxyLocalAddress)
+                    case ESysProxyType.ForcedChange when Utils.IsWindows():
                         {
-                            strExceptions = $"<local>;{config.constItem.defIEProxyExceptions};{config.systemProxyItem.systemProxyExceptions}";
+                            GetWindowsProxyString(config, port, portSocks, out var strProxy, out var strExceptions);
+                            ProxySettingWindows.SetProxy(strProxy, strExceptions, 2);
+                            break;
                         }
-
-                        var strProxy = string.Empty;
-                        if (Utils.IsNullOrEmpty(config.systemProxyItem.systemProxyAdvancedProtocol))
-                        {
-                            strProxy = $"{Global.Loopback}:{port}";
-                        }
-                        else
-                        {
-                            strProxy = config.systemProxyItem.systemProxyAdvancedProtocol
-                                .Replace("{ip}", Global.Loopback)
-                                .Replace("{http_port}", port.ToString())
-                                .Replace("{socks_port}", portSocks.ToString());
-                        }
-                        ProxySettingWindows.SetProxy(strProxy, strExceptions, 2);
-                    }
-                    else if (Utils.IsLinux())
-                    {
+                    case ESysProxyType.ForcedChange when Utils.IsLinux():
                         await ProxySettingLinux.SetProxy(Global.Loopback, port);
-                    }
-                    else if (Utils.IsOSX())
-                    {
-                        await ProxySettingOSX.SetProxy(Global.Loopback, port);
-                    }
-                }
-                else if (type == ESysProxyType.ForcedClear)
-                {
-                    if (Utils.IsWindows())
-                    {
+                        break;
+
+                    case ESysProxyType.ForcedChange:
+                        {
+                            if (Utils.IsOSX())
+                            {
+                                await ProxySettingOSX.SetProxy(Global.Loopback, port);
+                            }
+
+                            break;
+                        }
+                    case ESysProxyType.ForcedClear when Utils.IsWindows():
                         ProxySettingWindows.UnsetProxy();
-                    }
-                    else if (Utils.IsLinux())
-                    {
+                        break;
+
+                    case ESysProxyType.ForcedClear when Utils.IsLinux():
                         await ProxySettingLinux.UnsetProxy();
-                    }
-                    else if (Utils.IsOSX())
-                    {
-                        await ProxySettingOSX.UnsetProxy();
-                    }
-                }
-                else if (type == ESysProxyType.Pac)
-                {
-                    PacHandler.Start(Utils.GetConfigPath(), port, portPac);
-                    var strProxy = $"{Global.HttpProtocol}{Global.Loopback}:{portPac}/pac?t={DateTime.Now.Ticks}";
-                    ProxySettingWindows.SetProxy(strProxy, "", 4);
+                        break;
+
+                    case ESysProxyType.ForcedClear:
+                        {
+                            if (Utils.IsOSX())
+                            {
+                                await ProxySettingOSX.UnsetProxy();
+                            }
+
+                            break;
+                        }
+                    case ESysProxyType.Pac when Utils.IsWindows():
+                        {
+                            var portPac = AppHandler.Instance.GetLocalPort(EInboundProtocol.pac);
+                            PacHandler.Start(Utils.GetConfigPath(), port, portPac);
+                            var strProxy = $"{Global.HttpProtocol}{Global.Loopback}:{portPac}/pac?t={DateTime.Now.Ticks}";
+                            ProxySettingWindows.SetProxy(strProxy, "", 4);
+                            break;
+                        }
                 }
 
-                if (type != ESysProxyType.Pac)
+                if (type != ESysProxyType.Pac && Utils.IsWindows())
                 {
                     PacHandler.Stop();
                 }
@@ -88,5 +80,27 @@ namespace ServiceLib.Handler.SysProxy
             }
             return true;
         }
+
+        private static void GetWindowsProxyString(Config config, int port, int portSocks, out string strProxy, out string strExceptions)
+        {
+            strExceptions = "";
+            if (config.systemProxyItem.notProxyLocalAddress)
+            {
+                strExceptions = $"<local>;{config.constItem.defIEProxyExceptions};{config.systemProxyItem.systemProxyExceptions}";
+            }
+
+            strProxy = string.Empty;
+            if (Utils.IsNullOrEmpty(config.systemProxyItem.systemProxyAdvancedProtocol))
+            {
+                strProxy = $"{Global.Loopback}:{port}";
+            }
+            else
+            {
+                strProxy = config.systemProxyItem.systemProxyAdvancedProtocol
+                    .Replace("{ip}", Global.Loopback)
+                    .Replace("{http_port}", port.ToString())
+                    .Replace("{socks_port}", portSocks.ToString());
+            }
+        }
     }
 }
\ No newline at end of file
diff --git a/v2rayN/v2rayN.Desktop/Views/OptionSettingWindow.axaml.cs b/v2rayN/v2rayN.Desktop/Views/OptionSettingWindow.axaml.cs
index 2154a27e..c21c3401 100644
--- a/v2rayN/v2rayN.Desktop/Views/OptionSettingWindow.axaml.cs
+++ b/v2rayN/v2rayN.Desktop/Views/OptionSettingWindow.axaml.cs
@@ -163,13 +163,10 @@ namespace v2rayN.Desktop.Views
                 this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables);
             });
 
-            //if (Utils.IsWindows())
-            //{
-            //}
-            //else
-            //{
-            tabSystemproxy.IsVisible = false;
-            //}
+            if (!Utils.IsWindows())
+            {
+                tabSystemproxy.IsVisible = false;
+            }
         }
 
         private async Task<bool> UpdateViewHandler(EViewAction action, object? obj)