diff --git a/src/common.rs b/src/common.rs index e57aefe5c4c..e7430203102 100644 --- a/src/common.rs +++ b/src/common.rs @@ -1240,8 +1240,14 @@ pub async fn get_next_nonkeyexchange_msg( None } +#[allow(unused_mut)] #[cfg(not(any(target_os = "android", target_os = "ios")))] -pub fn check_process(arg: &str, same_uid: bool) -> bool { +pub fn check_process(arg: &str, mut same_uid: bool) -> bool { + #[cfg(target_os = "macos")] + if !crate::platform::is_root() { + log::warn!("Can not get other process's command line arguments on macos without root"); + same_uid = true; + } use hbb_common::sysinfo::System; let mut sys = System::new(); sys.refresh_processes(); diff --git a/src/server/connection.rs b/src/server/connection.rs index f5bc164823e..ead9d22deb7 100644 --- a/src/server/connection.rs +++ b/src/server/connection.rs @@ -958,7 +958,7 @@ impl Connection { } #[cfg(not(any(target_os = "android", target_os = "ios")))] if crate::is_server() && Config::get_option("allow-only-conn-window-open") == "Y" { - if !crate::check_process("", false) { + if !crate::check_process("", !crate::platform::is_root()) { self.send_login_error("The main window is not open").await; return false; }