fix(shim): 优化配置解析、跨平台编码与 UAC 提权逻辑

- 使用 `OsString`/`PathBuf` 替代 `String`,实现跨平台无损编码与命令行参数透传
- 完善 `FromLua` 转换与边界校验,拦截空洞 (`nil`) 及非整数键
- 修复环境变量拼接时由于内置分隔符导致的 `join_paths` 报错
- 优化 Windows 下 UAC 提权执行逻辑,改用宽字符 API (`ShellExecuteExW`)
This commit is contained in:
2026-08-18 11:15:30 +08:00
parent 5e69a6a980
commit e3cb065b35
7 changed files with 370 additions and 90 deletions

View File

@@ -20,7 +20,7 @@ fn main() {
// cargo:rerun-if-changed -> 当指定文件变化时,重新运行 xxx
println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rerun-if-changed=shims.lua");
println!("cargo:rerun-if-changed=rshim.lua");
println!("cargo:rustc-env=OUTPUT_DIR={}", output_dir.display());
// 创建目录
@@ -35,7 +35,7 @@ fn main() {
// 复制文件
let source = PathBuf::from(&manifest_dir).join("shims.lua");
let destination = output_dir.join("shims.lua");
let destination = output_dir.join("rshim.lua");
if source.exists() {
fs::copy(&source, &destination).expect("Failed to copy shims.lua");