diff --git a/ExplorerPatcher/dllmain.c b/ExplorerPatcher/dllmain.c index 98547d7..0e93fa7 100644 --- a/ExplorerPatcher/dllmain.c +++ b/ExplorerPatcher/dllmain.c @@ -16,7 +16,6 @@ #include #pragma comment(lib, "Dwmapi.lib") #include -#include #include #define _LIBVALINET_DEBUG_HOOKING_IATPATCH #include @@ -1054,40 +1053,34 @@ __declspec(dllexport) DWORD WINAPI main( { funchook = funchook_create(); printf("funchook create %d\n", funchook != 0); + HKEY hKey; + DWORD dwDisposition; + DWORD dwSize = sizeof(DWORD); - TCHAR* wszSettingsPath = malloc((MAX_PATH + 1) * sizeof(TCHAR)); - if (!wszSettingsPath) - { - return 0; - } - ZeroMemory( - wszSettingsPath, - (MAX_PATH + 1) * sizeof(TCHAR) - ); - SHGetFolderPathW( + RegCreateKeyExW( + HKEY_CURRENT_USER, + TEXT(REGPATH), + 0, NULL, - CSIDL_APPDATA, + REG_OPTION_NON_VOLATILE, + KEY_READ, NULL, - SHGFP_TYPE_CURRENT, - wszSettingsPath - ); - wcscat_s( - wszSettingsPath, - MAX_PATH, - TEXT(SYMBOLS_RELATIVE_PATH) + &hKey, + &dwDisposition ); - wprintf(L"Settings path: \"%s\"\n", wszSettingsPath); - -#ifndef DEBUG - UINT alloc_console = VnGetUInt( - TEXT("General"), - TEXT("AllocConsole"), + DWORD bAllocConsole = FALSE; + RegQueryValueExW( + hKey, + TEXT("bAllocConsole"), 0, - wszSettingsPath + NULL, + &bAllocConsole, + &dwSize ); - if (alloc_console) + printf("AllocConsole %d %d\n", bAllocConsole, hKey); + if (bAllocConsole) { FILE* conout; AllocConsole(); @@ -1098,7 +1091,6 @@ __declspec(dllexport) DWORD WINAPI main( stdout ); } -#endif HMODULE hSws = LoadLibraryW(L"SimpleWindowSwitcher.dll"); if (hSws) { @@ -1111,11 +1103,10 @@ __declspec(dllexport) DWORD WINAPI main( sizeof(symbols_addr) ); - if (LoadSymbols(&symbols_PTRS, wszSettingsPath)) + if (LoadSymbols(&symbols_PTRS)) { printf("Symbols have to be (re)downloaded...\n"); DownloadSymbolsParams* params = malloc(sizeof(DownloadSymbolsParams)); - params->wszSettingsPath = wszSettingsPath; params->hModule = hModule; CreateThread(0, 0, DownloadSymbols, params, 0, 0); return 0; @@ -1126,36 +1117,47 @@ __declspec(dllexport) DWORD WINAPI main( } - bHideExplorerSearchBar = VnGetUInt( - L"General", - L"HideExplorerSearchBar", + RegQueryValueExW( + hKey, + TEXT("bHideExplorerSearchBar"), 0, - wszSettingsPath + NULL, + &bHideExplorerSearchBar, + &dwSize ); - bMicaEffectOnTitlebar = VnGetUInt( - L"General", - L"MicaEffectOnTitlebar", + RegQueryValueExW( + hKey, + TEXT("bMicaEffectOnTitlebar"), 0, - wszSettingsPath + NULL, + &bMicaEffectOnTitlebar, + &dwSize ); - bHideControlCenterButton = VnGetUInt( - L"General", - L"HideControlCenterButton", + RegQueryValueExW( + hKey, + TEXT("bHideControlCenterButton"), 0, - wszSettingsPath + NULL, + &bHideControlCenterButton, + &dwSize ); - bSkinMenus = VnGetUInt( - L"General", - L"SkinMenus", + RegQueryValueExW( + hKey, + TEXT("bSkinMenus"), 0, - wszSettingsPath + NULL, + &bSkinMenus, + &dwSize ); - bSkinIcons = VnGetUInt( - L"General", - L"SkinIcons", + RegQueryValueExW( + hKey, + TEXT("bSkinIcons"), 0, - wszSettingsPath + NULL, + &bSkinIcons, + &dwSize ); + TCHAR* wszSBPath = malloc((MAX_PATH + 1) * sizeof(TCHAR)); @@ -1360,11 +1362,14 @@ __declspec(dllexport) DWORD WINAPI main( - UINT delay = VnGetUInt( - TEXT("General"), - TEXT("ExplorerReadyDelay"), + DWORD delay = 0; + RegQueryValueExW( + hKey, + TEXT("vExplorerReadyDelay"), 0, - wszSettingsPath + NULL, + &delay, + &dwSize ); CreateThread( 0, @@ -1393,11 +1398,14 @@ __declspec(dllexport) DWORD WINAPI main( - UINT bEnableArchivePlugin = VnGetUInt( - L"ArchiveMenu", - L"Enabled", + DWORD bEnableArchivePlugin = 0; + RegQueryValueExW( + hKey, + TEXT("bArchiveMenu"), 0, - wszSettingsPath + NULL, + &bEnableArchivePlugin, + &dwSize ); if (bEnableArchivePlugin) { @@ -1568,7 +1576,7 @@ BOOL WINAPI DllMain( dwSize = sizeof(DWORD); SHRegGetValueFromHKCUHKLMFunc( - TEXT(REGPATH_OTHERS) TEXT("\\") TEXT(STARTDOCKED_SB_NAME), + TEXT(REGPATH) TEXT("\\") TEXT(STARTDOCKED_SB_NAME), TEXT(STARTDOCKED_SB_0), SRRF_RT_REG_DWORD, NULL, @@ -1576,7 +1584,7 @@ BOOL WINAPI DllMain( (LPDWORD)(&dwSize) ); SHRegGetValueFromHKCUHKLMFunc( - TEXT(REGPATH_OTHERS) TEXT("\\") TEXT(STARTDOCKED_SB_NAME), + TEXT(REGPATH) TEXT("\\") TEXT(STARTDOCKED_SB_NAME), TEXT(STARTDOCKED_SB_1), SRRF_RT_REG_DWORD, NULL, @@ -1584,7 +1592,7 @@ BOOL WINAPI DllMain( (LPDWORD)(&dwSize) ); SHRegGetValueFromHKCUHKLMFunc( - TEXT(REGPATH_OTHERS) TEXT("\\") TEXT(STARTDOCKED_SB_NAME), + TEXT(REGPATH) TEXT("\\") TEXT(STARTDOCKED_SB_NAME), TEXT(STARTDOCKED_SB_2), SRRF_RT_REG_DWORD, NULL, @@ -1592,7 +1600,7 @@ BOOL WINAPI DllMain( (LPDWORD)(&dwSize) ); SHRegGetValueFromHKCUHKLMFunc( - TEXT(REGPATH_OTHERS) TEXT("\\") TEXT(STARTDOCKED_SB_NAME), + TEXT(REGPATH) TEXT("\\") TEXT(STARTDOCKED_SB_NAME), TEXT(STARTDOCKED_SB_3), SRRF_RT_REG_DWORD, NULL, @@ -1600,7 +1608,7 @@ BOOL WINAPI DllMain( (LPDWORD)(&dwSize) ); SHRegGetValueFromHKCUHKLMFunc( - TEXT(REGPATH_OTHERS) TEXT("\\") TEXT(STARTDOCKED_SB_NAME), + TEXT(REGPATH) TEXT("\\") TEXT(STARTDOCKED_SB_NAME), TEXT(STARTDOCKED_SB_4), SRRF_RT_REG_DWORD, NULL, diff --git a/ExplorerPatcher/symbols.c b/ExplorerPatcher/symbols.c index 59e639a..f94ccd7 100644 --- a/ExplorerPatcher/symbols.c +++ b/ExplorerPatcher/symbols.c @@ -59,7 +59,9 @@ L"\r\n"; DWORD DownloadSymbols(DownloadSymbolsParams* params) { - TCHAR* wszSettingsPath = params->wszSettingsPath; + HKEY hKey; + DWORD dwDisposition; + HMODULE hModule = params->hModule; Sleep(3000); @@ -115,27 +117,30 @@ DWORD DownloadSymbols(DownloadSymbolsParams* params) #endif ); - DWORD dwRet = 0; - char szSettingsPath[MAX_PATH + 1]; + + char szSettingsPath[MAX_PATH]; ZeroMemory( szSettingsPath, - (MAX_PATH + 1) * sizeof(char) + MAX_PATH * sizeof(char) ); - wcstombs_s( - &dwRet, + SHGetFolderPathA( + NULL, + CSIDL_APPDATA, + NULL, + SHGFP_TYPE_CURRENT, + szSettingsPath + ); + strcat_s( szSettingsPath, - MAX_PATH + 1, - wszSettingsPath, - MAX_PATH + 1 + MAX_PATH, + SYMBOLS_RELATIVE_PATH ); - PathRemoveFileSpecA(szSettingsPath); CreateDirectoryA(szSettingsPath, NULL); strcat_s( szSettingsPath, - MAX_PATH + 1, + MAX_PATH, "\\" ); - printf("Downloading to \"%s\".\n", szSettingsPath); symbols_addr symbols_PTRS; @@ -208,54 +213,90 @@ DWORD DownloadSymbols(DownloadSymbolsParams* params) return 5; } } - VnWriteUInt( - TEXT(TWINUI_PCSHELL_SB_NAME), + RegCreateKeyExW( + HKEY_CURRENT_USER, + TEXT(REGPATH) L"\\" TEXT(TWINUI_PCSHELL_SB_NAME), + 0, + NULL, + REG_OPTION_NON_VOLATILE, + KEY_WRITE, + NULL, + &hKey, + &dwDisposition + ); + if (!hKey) + { + FreeLibraryAndExitThread( + hModule, + 9 + ); + return 9; + } + RegSetValueExW( + hKey, TEXT(TWINUI_PCSHELL_SB_0), - symbols_PTRS.twinui_pcshell_PTRS[0], - wszSettingsPath + 0, + REG_DWORD, + &(symbols_PTRS.twinui_pcshell_PTRS[0]), + sizeof(DWORD) ); - VnWriteUInt( - TEXT(TWINUI_PCSHELL_SB_NAME), + RegSetValueExW( + hKey, TEXT(TWINUI_PCSHELL_SB_1), - symbols_PTRS.twinui_pcshell_PTRS[1], - wszSettingsPath + 0, + REG_DWORD, + &(symbols_PTRS.twinui_pcshell_PTRS[1]), + sizeof(DWORD) ); - VnWriteUInt( - TEXT(TWINUI_PCSHELL_SB_NAME), + RegSetValueExW( + hKey, TEXT(TWINUI_PCSHELL_SB_2), - symbols_PTRS.twinui_pcshell_PTRS[2], - wszSettingsPath + 0, + REG_DWORD, + &(symbols_PTRS.twinui_pcshell_PTRS[2]), + sizeof(DWORD) ); - VnWriteUInt( - TEXT(TWINUI_PCSHELL_SB_NAME), + RegSetValueExW( + hKey, TEXT(TWINUI_PCSHELL_SB_3), - symbols_PTRS.twinui_pcshell_PTRS[3], - wszSettingsPath + 0, + REG_DWORD, + &(symbols_PTRS.twinui_pcshell_PTRS[3]), + sizeof(DWORD) ); - VnWriteUInt( - TEXT(TWINUI_PCSHELL_SB_NAME), + RegSetValueExW( + hKey, TEXT(TWINUI_PCSHELL_SB_4), - symbols_PTRS.twinui_pcshell_PTRS[4], - wszSettingsPath + 0, + REG_DWORD, + &(symbols_PTRS.twinui_pcshell_PTRS[4]), + sizeof(DWORD) ); - VnWriteUInt( - TEXT(TWINUI_PCSHELL_SB_NAME), + RegSetValueExW( + hKey, TEXT(TWINUI_PCSHELL_SB_5), - symbols_PTRS.twinui_pcshell_PTRS[5], - wszSettingsPath + 0, + REG_DWORD, + &(symbols_PTRS.twinui_pcshell_PTRS[5]), + sizeof(DWORD) ); - VnWriteUInt( - TEXT(TWINUI_PCSHELL_SB_NAME), + RegSetValueExW( + hKey, TEXT(TWINUI_PCSHELL_SB_6), - symbols_PTRS.twinui_pcshell_PTRS[6], - wszSettingsPath + 0, + REG_DWORD, + &(symbols_PTRS.twinui_pcshell_PTRS[6]), + sizeof(DWORD) ); - VnWriteUInt( - TEXT(TWINUI_PCSHELL_SB_NAME), + RegSetValueExW( + hKey, TEXT(TWINUI_PCSHELL_SB_7), - symbols_PTRS.twinui_pcshell_PTRS[7], - wszSettingsPath + 0, + REG_DWORD, + &(symbols_PTRS.twinui_pcshell_PTRS[7]), + sizeof(DWORD) ); + RegCloseKey(hKey); @@ -312,49 +353,101 @@ DWORD DownloadSymbols(DownloadSymbolsParams* params) ); return 7; } - VnWriteUInt( - TEXT(STARTDOCKED_SB_NAME), + RegCreateKeyExW( + HKEY_CURRENT_USER, + TEXT(REGPATH) L"\\" TEXT(STARTDOCKED_SB_NAME), + 0, + NULL, + REG_OPTION_NON_VOLATILE, + KEY_WRITE, + NULL, + &hKey, + &dwDisposition + ); + if (!hKey) + { + FreeLibraryAndExitThread( + hModule, + 8 + ); + return 8; + } + RegSetValueExW( + hKey, TEXT(STARTDOCKED_SB_0), - symbols_PTRS.startdocked_PTRS[0], - wszSettingsPath + 0, + REG_DWORD, + &(symbols_PTRS.startdocked_PTRS[0]), + sizeof(DWORD) ); - VnWriteUInt( - TEXT(STARTDOCKED_SB_NAME), + RegSetValueExW( + hKey, TEXT(STARTDOCKED_SB_1), - symbols_PTRS.startdocked_PTRS[1], - wszSettingsPath + 0, + REG_DWORD, + &(symbols_PTRS.startdocked_PTRS[1]), + sizeof(DWORD) ); - VnWriteUInt( - TEXT(STARTDOCKED_SB_NAME), + RegSetValueExW( + hKey, TEXT(STARTDOCKED_SB_2), - symbols_PTRS.startdocked_PTRS[2], - wszSettingsPath + 0, + REG_DWORD, + &(symbols_PTRS.startdocked_PTRS[2]), + sizeof(DWORD) ); - VnWriteUInt( - TEXT(STARTDOCKED_SB_NAME), + RegSetValueExW( + hKey, TEXT(STARTDOCKED_SB_3), - symbols_PTRS.startdocked_PTRS[3], - wszSettingsPath + 0, + REG_DWORD, + &(symbols_PTRS.startdocked_PTRS[3]), + sizeof(DWORD) ); - VnWriteUInt( - TEXT(STARTDOCKED_SB_NAME), + RegSetValueExW( + hKey, TEXT(STARTDOCKED_SB_4), - symbols_PTRS.startdocked_PTRS[4], - wszSettingsPath + 0, + REG_DWORD, + &(symbols_PTRS.startdocked_PTRS[4]), + sizeof(DWORD) ); + RegCloseKey(hKey); - - VnWriteString( - TEXT("OS"), - TEXT("Build"), + RegCreateKeyExW( + HKEY_CURRENT_USER, + TEXT(REGPATH), + 0, + NULL, + REG_OPTION_NON_VOLATILE, + KEY_WRITE, + NULL, + &hKey, + &dwDisposition + ); + if (!hKey) + { + FreeLibraryAndExitThread( + hModule, + 10 + ); + return 10; + } + RegSetValueExW( + hKey, + TEXT("szOSBuild"), + 0, + REG_SZ, szReportedVersion, - wszSettingsPath + wcslen(szReportedVersion) * sizeof(TCHAR) ); + RegCloseKey(hKey); + if (symbols_PTRS.twinui_pcshell_PTRS[0]) { @@ -407,192 +500,144 @@ DWORD DownloadSymbols(DownloadSymbolsParams* params) Sleep(4000); - TCHAR wszExplorerPath[MAX_PATH + 1]; - wszExplorerPath[0] = L'\"'; - GetSystemDirectory(wszExplorerPath + 1, MAX_PATH); - wcscat_s(wszExplorerPath, MAX_PATH + 1, L"\\rundll32.exe\" \""); - GetModuleFileName(hModule, wszExplorerPath + wcslen(wszExplorerPath), MAX_PATH - wcslen(wszExplorerPath)); - wcscat_s(wszExplorerPath, MAX_PATH, L"\",ZZLaunchExplorer"); - wprintf(L"Command to launch: \" %s \"\n.", wszExplorerPath); - STARTUPINFO si = { sizeof(si) }; - PROCESS_INFORMATION pi; - BOOL b = CreateProcess( - NULL, - wszExplorerPath, - NULL, - NULL, - TRUE, - CREATE_UNICODE_ENVIRONMENT, - NULL, - NULL, - &si, - &pi - ); - - FreeConsole(); - TerminateProcess( - OpenProcess( - PROCESS_TERMINATE, - FALSE, - GetCurrentProcessId() - ), - EXIT_CODE_EXPLORER - ); + exit(0); } -BOOL LoadSymbols(symbols_addr* symbols_PTRS, TCHAR* wszSettingsPath) +BOOL LoadSymbols(symbols_addr* symbols_PTRS) { - symbols_PTRS->twinui_pcshell_PTRS[0] = VnGetUInt( - TEXT(TWINUI_PCSHELL_SB_NAME), + HKEY hKey; + DWORD dwDisposition; + DWORD dwSize = sizeof(DWORD); + + RegCreateKeyExW( + HKEY_CURRENT_USER, + TEXT(REGPATH) L"\\" TEXT(TWINUI_PCSHELL_SB_NAME), + 0, + NULL, + REG_OPTION_NON_VOLATILE, + KEY_READ, + NULL, + &hKey, + &dwDisposition + ); + RegQueryValueExW( + hKey, TEXT(TWINUI_PCSHELL_SB_0), 0, - wszSettingsPath + NULL, + &(symbols_PTRS->twinui_pcshell_PTRS[0]), + &dwSize ); - symbols_PTRS->twinui_pcshell_PTRS[1] = VnGetUInt( - TEXT(TWINUI_PCSHELL_SB_NAME), + RegQueryValueExW( + hKey, TEXT(TWINUI_PCSHELL_SB_1), 0, - wszSettingsPath + NULL, + &(symbols_PTRS->twinui_pcshell_PTRS[1]), + &dwSize ); - symbols_PTRS->twinui_pcshell_PTRS[2] = VnGetUInt( - TEXT(TWINUI_PCSHELL_SB_NAME), + RegQueryValueExW( + hKey, TEXT(TWINUI_PCSHELL_SB_2), 0, - wszSettingsPath + NULL, + &(symbols_PTRS->twinui_pcshell_PTRS[2]), + &dwSize ); - symbols_PTRS->twinui_pcshell_PTRS[3] = VnGetUInt( - TEXT(TWINUI_PCSHELL_SB_NAME), + RegQueryValueExW( + hKey, TEXT(TWINUI_PCSHELL_SB_3), 0, - wszSettingsPath + NULL, + &(symbols_PTRS->twinui_pcshell_PTRS[3]), + &dwSize ); - symbols_PTRS->twinui_pcshell_PTRS[4] = VnGetUInt( - TEXT(TWINUI_PCSHELL_SB_NAME), + RegQueryValueExW( + hKey, TEXT(TWINUI_PCSHELL_SB_4), 0, - wszSettingsPath + NULL, + &(symbols_PTRS->twinui_pcshell_PTRS[4]), + &dwSize ); - symbols_PTRS->twinui_pcshell_PTRS[5] = VnGetUInt( - TEXT(TWINUI_PCSHELL_SB_NAME), + RegQueryValueExW( + hKey, TEXT(TWINUI_PCSHELL_SB_5), 0, - wszSettingsPath + NULL, + &(symbols_PTRS->twinui_pcshell_PTRS[5]), + &dwSize ); - symbols_PTRS->twinui_pcshell_PTRS[6] = VnGetUInt( - TEXT(TWINUI_PCSHELL_SB_NAME), + RegQueryValueExW( + hKey, TEXT(TWINUI_PCSHELL_SB_6), 0, - wszSettingsPath + NULL, + &(symbols_PTRS->twinui_pcshell_PTRS[6]), + &dwSize ); - symbols_PTRS->twinui_pcshell_PTRS[7] = VnGetUInt( - TEXT(TWINUI_PCSHELL_SB_NAME), + RegQueryValueExW( + hKey, TEXT(TWINUI_PCSHELL_SB_7), 0, - wszSettingsPath + NULL, + &(symbols_PTRS->twinui_pcshell_PTRS[7]), + &dwSize ); - HKEY hKeySettings; - DWORD dwDisposition; + RegCloseKey(hKey); RegCreateKeyExW( HKEY_CURRENT_USER, - TEXT(REGPATH_OTHERS) L"\\" TEXT(STARTDOCKED_SB_NAME), + TEXT(REGPATH) L"\\" TEXT(STARTDOCKED_SB_NAME), 0, NULL, REG_OPTION_NON_VOLATILE, - KEY_WRITE, + KEY_READ, NULL, - &hKeySettings, + &hKey, &dwDisposition ); - symbols_PTRS->startdocked_PTRS[0] = VnGetUInt( - TEXT(STARTDOCKED_SB_NAME), + RegQueryValueExW( + hKey, TEXT(STARTDOCKED_SB_0), 0, - wszSettingsPath + NULL, + &(symbols_PTRS->startdocked_PTRS[0]), + &dwSize ); - if (hKeySettings) - { - RegSetValueExW( - hKeySettings, - TEXT(STARTDOCKED_SB_0), - 0, - REG_DWORD, - &(symbols_PTRS->startdocked_PTRS[0]), - sizeof(DWORD) - ); - } - symbols_PTRS->startdocked_PTRS[1] = VnGetUInt( - TEXT(STARTDOCKED_SB_NAME), + RegQueryValueExW( + hKey, TEXT(STARTDOCKED_SB_1), 0, - wszSettingsPath + NULL, + &(symbols_PTRS->startdocked_PTRS[1]), + &dwSize ); - if (hKeySettings) - { - RegSetValueExW( - hKeySettings, - TEXT(STARTDOCKED_SB_1), - 0, - REG_DWORD, - &(symbols_PTRS->startdocked_PTRS[1]), - sizeof(DWORD) - ); - } - symbols_PTRS->startdocked_PTRS[2] = VnGetUInt( - TEXT(STARTDOCKED_SB_NAME), + RegQueryValueExW( + hKey, TEXT(STARTDOCKED_SB_2), 0, - wszSettingsPath + NULL, + &(symbols_PTRS->startdocked_PTRS[2]), + &dwSize ); - if (hKeySettings) - { - RegSetValueExW( - hKeySettings, - TEXT(STARTDOCKED_SB_2), - 0, - REG_DWORD, - &(symbols_PTRS->startdocked_PTRS[2]), - sizeof(DWORD) - ); - } - symbols_PTRS->startdocked_PTRS[3] = VnGetUInt( - TEXT(STARTDOCKED_SB_NAME), + RegQueryValueExW( + hKey, TEXT(STARTDOCKED_SB_3), 0, - wszSettingsPath + NULL, + &(symbols_PTRS->startdocked_PTRS[3]), + &dwSize ); - if (hKeySettings) - { - RegSetValueExW( - hKeySettings, - TEXT(STARTDOCKED_SB_3), - 0, - REG_DWORD, - &(symbols_PTRS->startdocked_PTRS[3]), - sizeof(DWORD) - ); - } - symbols_PTRS->startdocked_PTRS[4] = VnGetUInt( - TEXT(STARTDOCKED_SB_NAME), + RegQueryValueExW( + hKey, TEXT(STARTDOCKED_SB_4), 0, - wszSettingsPath + NULL, + &(symbols_PTRS->startdocked_PTRS[4]), + &dwSize ); - if (hKeySettings) - { - RegSetValueExW( - hKeySettings, - TEXT(STARTDOCKED_SB_4), - 0, - REG_DWORD, - &(symbols_PTRS->startdocked_PTRS[4]), - sizeof(DWORD) - ); - } - if (hKeySettings) - { - RegCloseKey(hKeySettings); - } + RegCloseKey(hKey); BOOL bNeedToDownload = FALSE; for (UINT i = 0; i < sizeof(symbols_addr) / sizeof(DWORD); ++i) @@ -624,15 +669,27 @@ BOOL LoadSymbols(symbols_addr* symbols_PTRS, TCHAR* wszSettingsPath) rovi.dwBuildNumber, ubr ); - VnGetString( - TEXT("OS"), - TEXT("Build"), - szStoredVersion, - MAX_PATH, - MAX_PATH, + RegCreateKeyExW( + HKEY_CURRENT_USER, + TEXT(REGPATH), + 0, + NULL, + REG_OPTION_NON_VOLATILE, + KEY_READ, + NULL, + &hKey, + &dwDisposition + ); + dwSize = MAX_PATH; + RegQueryValueExW( + hKey, + TEXT("szOSBuild"), + 0, NULL, - wszSettingsPath + szStoredVersion, + &dwSize ); + RegCloseKey(hKey); if (!bNeedToDownload) { bNeedToDownload = wcscmp(szReportedVersion, szStoredVersion); diff --git a/ExplorerPatcher/symbols.h b/ExplorerPatcher/symbols.h index a2870e1..02c5987 100644 --- a/ExplorerPatcher/symbols.h +++ b/ExplorerPatcher/symbols.h @@ -8,9 +8,8 @@ #include "utility.h" #define EXIT_CODE_EXPLORER 1 -#define REGPATH_OTHERS "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ExplorerPatcher" -#define SYMBOLS_RELATIVE_PATH "\\ExplorerPatcher\\settings.ini" +#define SYMBOLS_RELATIVE_PATH "\\ExplorerPatcher" #define TWINUI_PCSHELL_SB_NAME "twinui.pcshell" #define TWINUI_PCSHELL_SB_0 "CImmersiveContextMenuOwnerDrawHelper::s_ContextMenuWndProc" #define TWINUI_PCSHELL_SB_1 "CLauncherTipContextMenu::GetMenuItemsAsync" @@ -38,10 +37,9 @@ typedef struct symbols_addr typedef struct _DownloadSymbolsParams { - TCHAR* wszSettingsPath; HMODULE hModule; } DownloadSymbolsParams; DWORD DownloadSymbols(DownloadSymbolsParams* params); -BOOL LoadSymbols(symbols_addr* symbols_PTRS, TCHAR* wszSettingsPath); +BOOL LoadSymbols(symbols_addr* symbols_PTRS); #endif \ No newline at end of file diff --git a/ExplorerPatcher/utility.h b/ExplorerPatcher/utility.h index 58600c6..89e4037 100644 --- a/ExplorerPatcher/utility.h +++ b/ExplorerPatcher/utility.h @@ -8,6 +8,7 @@ #include #define APPID L"Microsoft.Windows.Explorer" +#define REGPATH "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ExplorerPatcher" #pragma region "Weird stuff" INT64 nimpl4_1(INT64 a1, DWORD* a2);