diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index eaf064c..e2a4712 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -185,13 +185,16 @@ fn get_logs_history() -> Vec { fn expand_win_path(path: &str) -> PathBuf { let mut expanded = path.to_string(); let env_vars = [ - "AppData", "LocalAppData", "ProgramData", "SystemRoot", "SystemDrive", "TEMP", "USERPROFILE" + "AppData", "LocalAppData", "ProgramData", "SystemRoot", "SystemDrive", "TEMP", "USERPROFILE", "HOMEDRIVE", "HOMEPATH" ]; + for var in env_vars { - let placeholder = format!("%{}%", var); - if expanded.contains(&placeholder) { + // 创建不区分大小写的正则表达式,匹配 %VAR% + let re = Regex::new(&format!(r"(?i)%{}%", var)).unwrap(); + if re.is_match(&expanded) { if let Ok(val) = std::env::var(var) { - expanded = expanded.replace(&placeholder, &val); + // 使用正则表达式替换所有匹配项 + expanded = re.replace_all(&expanded, val.as_str()).to_string(); } } }