diff --git a/flutter/lib/utils/multi_window_manager.dart b/flutter/lib/utils/multi_window_manager.dart
index 224052bff..550e9ab08 100644
--- a/flutter/lib/utils/multi_window_manager.dart
+++ b/flutter/lib/utils/multi_window_manager.dart
@@ -43,11 +43,14 @@ class RustDeskMultiWindowManager {
 
   Future<dynamic> newRemoteDesktop(String remoteId,
       {String? switch_uuid}) async {
-    final msg = jsonEncode({
+    var params = {
       "type": WindowType.RemoteDesktop.index,
       "id": remoteId,
-      "switch_uuid": switch_uuid ?? ""
-    });
+    };
+    if (switch_uuid != null) {
+      params['switch_uuid'] = switch_uuid;
+    }
+    final msg = jsonEncode(params);
 
     try {
       final ids = await DesktopMultiWindow.getAllSubWindowIds();
diff --git a/src/core_main.rs b/src/core_main.rs
index 714502e85..89a962f1d 100644
--- a/src/core_main.rs
+++ b/src/core_main.rs
@@ -304,9 +304,13 @@ fn core_main_invoke_new_connection(mut args: std::env::Args) -> Option<Vec<Strin
             switch_uuid = args.next();
         }
     }
+    let mut param_array = vec![];
+    if switch_uuid.is_some() {
+        let switch_uuid = switch_uuid.map_or("".to_string(), |p| format!("switch_uuid={}", p));
+        param_array.push(switch_uuid);
+    }
 
-    let switch_uuid = switch_uuid.map_or("".to_string(), |p| format!("switch_uuid={}", p));
-    let params = vec![switch_uuid].join("&");
+    let params = param_array.join("&");
     let params_flag = if params.is_empty() { "" } else { "?" };
     #[allow(unused)]
     let uni_links = format!(