mirror of
https://github.com/rustdesk/rustdesk.git
synced 2024-11-29 16:49:10 +08:00
fix can't install when username contains &, @, ^
Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
parent
6f28643ad3
commit
f94791793b
@ -1236,6 +1236,15 @@ pub fn uninstall_me() -> ResultType<()> {
|
||||
|
||||
fn write_cmds(cmds: String, ext: &str, tip: &str) -> ResultType<std::path::PathBuf> {
|
||||
let mut tmp = std::env::temp_dir();
|
||||
// When dir contains these characters, the bat file will not execute in elevated mode.
|
||||
if vec!["&", "@", "^"]
|
||||
.drain(..)
|
||||
.any(|s| tmp.to_string_lossy().to_string().contains(s))
|
||||
{
|
||||
if let Ok(dir) = user_accessible_folder() {
|
||||
tmp = dir;
|
||||
}
|
||||
}
|
||||
tmp.push(format!("{}_{}.{}", crate::get_app_name(), tip, ext));
|
||||
let mut file = std::fs::File::create(&tmp)?;
|
||||
// in case cmds mixed with \r\n and \n, make sure all ending with \r\n
|
||||
@ -1872,3 +1881,19 @@ pub fn change_resolution(name: &str, width: usize, height: usize) -> ResultType<
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
pub fn user_accessible_folder() -> ResultType<PathBuf> {
|
||||
let disk = std::env::var("SystemDrive").unwrap_or("C:".to_string());
|
||||
let dir1 = PathBuf::from(format!("{}\\ProgramData", disk));
|
||||
// NOTICE: "C:\Windows\Temp" requires permanent authorization.
|
||||
let dir2 = PathBuf::from(format!("{}\\Windows\\Temp", disk));
|
||||
let dir;
|
||||
if dir1.exists() {
|
||||
dir = dir1;
|
||||
} else if dir2.exists() {
|
||||
dir = dir2;
|
||||
} else {
|
||||
bail!("no vaild user accessible folder");
|
||||
}
|
||||
Ok(dir)
|
||||
}
|
||||
|
@ -117,17 +117,7 @@ impl SharedMemory {
|
||||
}
|
||||
|
||||
fn flink(name: String) -> ResultType<String> {
|
||||
let disk = std::env::var("SystemDrive").unwrap_or("C:".to_string());
|
||||
let dir1 = PathBuf::from(format!("{}\\ProgramData", disk));
|
||||
let dir2 = PathBuf::from(format!("{}\\Windows\\Temp", disk));
|
||||
let mut dir;
|
||||
if dir1.exists() {
|
||||
dir = dir1;
|
||||
} else if dir2.exists() {
|
||||
dir = dir2;
|
||||
} else {
|
||||
bail!("no vaild flink directory");
|
||||
}
|
||||
let mut dir = crate::platform::user_accessible_folder()?;
|
||||
dir = dir.join(hbb_common::config::APP_NAME.read().unwrap().clone());
|
||||
if !dir.exists() {
|
||||
std::fs::create_dir(&dir)?;
|
||||
|
Loading…
Reference in New Issue
Block a user