From 16e7cac48af4e88c3ee3710a6e3a335e1486adb5 Mon Sep 17 00:00:00 2001 From: Igor Pissolati Date: Wed, 23 Apr 2025 01:00:30 -0300 Subject: [PATCH] Retry loading using normal path when wow6432node path is not found --- .../registry/registry_manager.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/windows-emulator/registry/registry_manager.cpp b/src/windows-emulator/registry/registry_manager.cpp index cd3d75fb..3309f1e5 100644 --- a/src/windows-emulator/registry/registry_manager.cpp +++ b/src/windows-emulator/registry/registry_manager.cpp @@ -105,7 +105,22 @@ std::optional registry_manager::get_key(const utils::path_key& key return {std::move(reg_key)}; } - const auto* entry = iterator->second->get_sub_key(reg_key.path.get()); + auto path = reg_key.path.get(); + const auto* entry = iterator->second->get_sub_key(path); + + if (!entry) + { + constexpr std::wstring_view wowPrefix = L"wow6432node\\"; + + const auto pathStr = path.wstring(); + if (pathStr.starts_with(wowPrefix)) + { + path = pathStr.substr(wowPrefix.size()); + reg_key.path = path; + entry = iterator->second->get_sub_key(path); + } + } + if (!entry) { return std::nullopt;