diff --git a/WeChatFerry/spy/account_manager.cpp b/WeChatFerry/spy/account_manager.cpp index e7844a4..3043c0f 100644 --- a/WeChatFerry/spy/account_manager.cpp +++ b/WeChatFerry/spy/account_manager.cpp @@ -20,7 +20,7 @@ using get_data_path_t = QWORD (*)(QWORD); // 缓存避免重复查询 static std::optional cachedWxid; -static std::optional cachedHomePath; +static std::optional cachedHomePath; // 清除缓存 static void clear_cached_wxid() { cachedWxid.reset(); } @@ -46,7 +46,7 @@ bool is_logged_in() return service_addr && util::get_qword(service_addr + OsAcc::LOGIN) != 0; } -std::string get_home_path() +fs::path get_home_path() { if (cachedHomePath) { return *cachedHomePath; @@ -56,8 +56,7 @@ std::string get_home_path() int64_t service_addr = get_account_service(); GetDataPath((QWORD)&home); if (home.wptr) { - fs::path path = util::w2s(std::wstring(home.wptr, home.size)); - cachedHomePath = path.generic_string(); + cachedHomePath = util::w2s(std::wstring(home.wptr, home.size)); } return *cachedHomePath; } @@ -81,7 +80,7 @@ UserInfo_t get_user_info() if (!service_addr) return ui; ui.wxid = get_self_wxid(); - ui.home = get_home_path(); + ui.home = get_home_path().generic_string(); ui.name = get_string_value(service_addr, OsAcc::NAME); ui.mobile = get_string_value(service_addr, OsAcc::MOBILE); return ui; diff --git a/WeChatFerry/spy/account_manager.h b/WeChatFerry/spy/account_manager.h index e184475..4eede78 100644 --- a/WeChatFerry/spy/account_manager.h +++ b/WeChatFerry/spy/account_manager.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include @@ -12,7 +13,7 @@ namespace account bool is_logged_in(); // 获取 WeChat 数据存储路径 -std::string get_home_path(); +std::filesystem::path get_home_path(); // 获取自身 wxid std::string get_self_wxid();