🐛 移动dll以解决路径问题

#206
This commit is contained in:
BTMuli
2026-01-17 17:05:23 +08:00
parent 3a08234a78
commit eaa61e665a
3 changed files with 10 additions and 9 deletions

View File

@@ -25,12 +25,7 @@ fn main() {
},
));
#[cfg(target_os = "windows")]
{
enable_dpi_v2();
unsafe {
std::env::set_var("RUST_BACKTRACE", "1");
}
}
enable_dpi_v2();
#[cfg(target_os = "linux")]
unsafe {
// Not unsafe if you don't use edition 2024

View File

@@ -187,7 +187,6 @@ pub fn find_module_base(pid: u32, dll_name: &str) -> Option<usize> {
loop {
let len = me32.szModule.iter().position(|&c| c == 0).unwrap_or(me32.szModule.len());
let name = String::from_utf16_lossy(&me32.szModule[..len]);
eprintln!("Enumerated module: {}", name);
// 精确文件名比较或后缀比较(大小写不敏感)
if name.eq_ignore_ascii_case(dll_name)

View File

@@ -11,7 +11,7 @@ use pt_ac::parse_achi_list;
use pt_store::parse_store_list;
use serde_json::Value;
use std::collections::HashMap;
use std::fs::File;
use std::fs::{self, File};
use std::io::{self, Read, Write};
use std::os::windows::io::{FromRawHandle, RawHandle};
use std::sync::Arc;
@@ -74,7 +74,14 @@ pub fn call_yae_dll(
uid: String,
ticket: Option<String>,
) -> Result<(), String> {
let dll_path = app_handle.path().resource_dir().unwrap().join("resources/YaeAchievementLib.dll");
let dll_local_path =
app_handle.path().resource_dir().unwrap().join("resources/YaeAchievementLib.dll");
let dll_path = app_handle.path().app_config_dir().unwrap().join("YaeAchievementLib.dll");
// -1. 移动 dll 到应用目录以解决权限问题
match fs::copy(&dll_local_path, &dll_path) {
Ok(_) => println!("✅ DLL 已成功复制到 {:?}", dll_path),
Err(e) => eprintln!("❌ 复制 DLL 失败: {:?}", e),
}
dbg!(&dll_path);
// 0. 创建 YaeAchievementPipe 的 命名管道,获取句柄
dbg!("开始启动 YaeAchievementPipe 命名管道");