diff --git a/src/core_main.rs b/src/core_main.rs index 265beb23d..a1f0edecd 100644 --- a/src/core_main.rs +++ b/src/core_main.rs @@ -101,7 +101,6 @@ pub fn core_main() -> Option> { args.clear(); } if args.len() > 0 && args[0] == "--version" { - // not use my_println here, because check super use using this command, no dialog expected println!("{}", crate::VERSION); return None; } @@ -249,49 +248,41 @@ pub fn core_main() -> Option> { return None; } else if args[0] == "--password" { if args.len() == 2 { - if crate::platform::is_installed() - && crate::platform::check_super_user_permission().unwrap_or_default() - { + if crate::platform::is_installed() && is_root() { if let Err(err) = crate::ipc::set_permanent_password(args[1].to_owned()) { - my_println!("{err}"); + println!("{err}"); } else { - my_println!("Done!"); + println!("Done!"); } } else { - my_println!("Installation and administrative privileges required!"); + println!("Installation and administrative privileges required!"); } } return None; } else if args[0] == "--get-id" { - if crate::platform::is_installed() - && crate::platform::check_super_user_permission().unwrap_or_default() - { - my_println!("{}", crate::ipc::get_id()); + if crate::platform::is_installed() && is_root() { + println!("{}", crate::ipc::get_id()); } else { - my_println!("Installation and administrative privileges required!"); + println!("Installation and administrative privileges required!"); } return None; } else if args[0] == "--set-id" { if args.len() == 2 { - if crate::platform::is_installed() - && crate::platform::check_super_user_permission().unwrap_or_default() - { + if crate::platform::is_installed() && is_root() { let old_id = crate::ipc::get_id(); let mut res = crate::ui_interface::change_id_shared(args[1].to_owned(), old_id); if res.is_empty() { res = "Done!".to_owned(); } - my_println!("{}", res); + println!("{}", res); } else { - my_println!("Installation and administrative privileges required!"); + println!("Installation and administrative privileges required!"); } } return None; } else if args[0] == "--config" { if args.len() == 2 && !args[0].contains("host=") { - if crate::platform::is_installed() - && crate::platform::check_super_user_permission().unwrap_or_default() - { + if crate::platform::is_installed() && is_root() { // encrypted string used in renaming exe. let name = if args[1].ends_with(".exe") { args[1].to_owned() @@ -309,22 +300,20 @@ pub fn core_main() -> Option> { } } } else { - my_println!("Installation and administrative privileges required!"); + println!("Installation and administrative privileges required!"); } } return None; } else if args[0] == "--option" { - if crate::platform::is_installed() - && crate::platform::check_super_user_permission().unwrap_or_default() - { + if crate::platform::is_installed() && is_root() { if args.len() == 2 { let options = crate::ipc::get_options(); - my_println!("{}", options.get(&args[1]).unwrap_or(&"".to_owned())); + println!("{}", options.get(&args[1]).unwrap_or(&"".to_owned())); } else if args.len() == 3 { crate::ipc::set_option(&args[1], &args[2]); } } else { - my_println!("Installation and administrative privileges required!"); + println!("Installation and administrative privileges required!"); } return None; } else if args[0] == "--check-hwcodec-config" { @@ -499,3 +488,14 @@ fn try_send_by_dbus(uni_links: String) -> Option> { } } } + +#[cfg(not(any(target_os = "android", target_os = "ios")))] +fn is_root() -> bool { + #[cfg(windows)] + { + return crate::platform::is_elevated(None).unwrap_or_default() + || crate::platform::is_root(); + } + #[allow(unreachable_code)] + crate::platform::is_root() +}