mirror of
https://github.com/valinet/ExplorerPatcher.git
synced 2025-02-17 11:08:41 +01:00
Moved all program settings to registry
This commit is contained in:
parent
ad2b8a8635
commit
fdfeecb28b
@ -16,7 +16,6 @@
|
||||
#include <dwmapi.h>
|
||||
#pragma comment(lib, "Dwmapi.lib")
|
||||
#include <roapi.h>
|
||||
#include <valinet/ini/ini.h>
|
||||
#include <valinet/pdb/pdb.h>
|
||||
#define _LIBVALINET_DEBUG_HOOKING_IATPATCH
|
||||
#include <valinet/hooking/iatpatch.h>
|
||||
@ -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(
|
||||
NULL,
|
||||
CSIDL_APPDATA,
|
||||
NULL,
|
||||
SHGFP_TYPE_CURRENT,
|
||||
wszSettingsPath
|
||||
);
|
||||
wcscat_s(
|
||||
wszSettingsPath,
|
||||
MAX_PATH,
|
||||
TEXT(SYMBOLS_RELATIVE_PATH)
|
||||
);
|
||||
wprintf(L"Settings path: \"%s\"\n", wszSettingsPath);
|
||||
|
||||
#ifndef DEBUG
|
||||
UINT alloc_console = VnGetUInt(
|
||||
TEXT("General"),
|
||||
TEXT("AllocConsole"),
|
||||
RegCreateKeyExW(
|
||||
HKEY_CURRENT_USER,
|
||||
TEXT(REGPATH),
|
||||
0,
|
||||
wszSettingsPath
|
||||
NULL,
|
||||
REG_OPTION_NON_VOLATILE,
|
||||
KEY_READ,
|
||||
NULL,
|
||||
&hKey,
|
||||
&dwDisposition
|
||||
);
|
||||
if (alloc_console)
|
||||
DWORD bAllocConsole = FALSE;
|
||||
RegQueryValueExW(
|
||||
hKey,
|
||||
TEXT("bAllocConsole"),
|
||||
0,
|
||||
NULL,
|
||||
&bAllocConsole,
|
||||
&dwSize
|
||||
);
|
||||
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,
|
||||
|
@ -59,7 +59,9 @@ L"</toast>\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),
|
||||
TEXT(TWINUI_PCSHELL_SB_0),
|
||||
0,
|
||||
wszSettingsPath
|
||||
);
|
||||
symbols_PTRS->twinui_pcshell_PTRS[1] = VnGetUInt(
|
||||
TEXT(TWINUI_PCSHELL_SB_NAME),
|
||||
TEXT(TWINUI_PCSHELL_SB_1),
|
||||
0,
|
||||
wszSettingsPath
|
||||
);
|
||||
symbols_PTRS->twinui_pcshell_PTRS[2] = VnGetUInt(
|
||||
TEXT(TWINUI_PCSHELL_SB_NAME),
|
||||
TEXT(TWINUI_PCSHELL_SB_2),
|
||||
0,
|
||||
wszSettingsPath
|
||||
);
|
||||
symbols_PTRS->twinui_pcshell_PTRS[3] = VnGetUInt(
|
||||
TEXT(TWINUI_PCSHELL_SB_NAME),
|
||||
TEXT(TWINUI_PCSHELL_SB_3),
|
||||
0,
|
||||
wszSettingsPath
|
||||
);
|
||||
symbols_PTRS->twinui_pcshell_PTRS[4] = VnGetUInt(
|
||||
TEXT(TWINUI_PCSHELL_SB_NAME),
|
||||
TEXT(TWINUI_PCSHELL_SB_4),
|
||||
0,
|
||||
wszSettingsPath
|
||||
);
|
||||
symbols_PTRS->twinui_pcshell_PTRS[5] = VnGetUInt(
|
||||
TEXT(TWINUI_PCSHELL_SB_NAME),
|
||||
TEXT(TWINUI_PCSHELL_SB_5),
|
||||
0,
|
||||
wszSettingsPath
|
||||
);
|
||||
symbols_PTRS->twinui_pcshell_PTRS[6] = VnGetUInt(
|
||||
TEXT(TWINUI_PCSHELL_SB_NAME),
|
||||
TEXT(TWINUI_PCSHELL_SB_6),
|
||||
0,
|
||||
wszSettingsPath
|
||||
);
|
||||
symbols_PTRS->twinui_pcshell_PTRS[7] = VnGetUInt(
|
||||
TEXT(TWINUI_PCSHELL_SB_NAME),
|
||||
TEXT(TWINUI_PCSHELL_SB_7),
|
||||
0,
|
||||
wszSettingsPath
|
||||
);
|
||||
HKEY hKeySettings;
|
||||
HKEY hKey;
|
||||
DWORD dwDisposition;
|
||||
DWORD dwSize = sizeof(DWORD);
|
||||
|
||||
RegCreateKeyExW(
|
||||
HKEY_CURRENT_USER,
|
||||
TEXT(REGPATH_OTHERS) L"\\" TEXT(STARTDOCKED_SB_NAME),
|
||||
TEXT(REGPATH) L"\\" TEXT(TWINUI_PCSHELL_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(TWINUI_PCSHELL_SB_0),
|
||||
0,
|
||||
NULL,
|
||||
&(symbols_PTRS->twinui_pcshell_PTRS[0]),
|
||||
&dwSize
|
||||
);
|
||||
RegQueryValueExW(
|
||||
hKey,
|
||||
TEXT(TWINUI_PCSHELL_SB_1),
|
||||
0,
|
||||
NULL,
|
||||
&(symbols_PTRS->twinui_pcshell_PTRS[1]),
|
||||
&dwSize
|
||||
);
|
||||
RegQueryValueExW(
|
||||
hKey,
|
||||
TEXT(TWINUI_PCSHELL_SB_2),
|
||||
0,
|
||||
NULL,
|
||||
&(symbols_PTRS->twinui_pcshell_PTRS[2]),
|
||||
&dwSize
|
||||
);
|
||||
RegQueryValueExW(
|
||||
hKey,
|
||||
TEXT(TWINUI_PCSHELL_SB_3),
|
||||
0,
|
||||
NULL,
|
||||
&(symbols_PTRS->twinui_pcshell_PTRS[3]),
|
||||
&dwSize
|
||||
);
|
||||
RegQueryValueExW(
|
||||
hKey,
|
||||
TEXT(TWINUI_PCSHELL_SB_4),
|
||||
0,
|
||||
NULL,
|
||||
&(symbols_PTRS->twinui_pcshell_PTRS[4]),
|
||||
&dwSize
|
||||
);
|
||||
RegQueryValueExW(
|
||||
hKey,
|
||||
TEXT(TWINUI_PCSHELL_SB_5),
|
||||
0,
|
||||
NULL,
|
||||
&(symbols_PTRS->twinui_pcshell_PTRS[5]),
|
||||
&dwSize
|
||||
);
|
||||
RegQueryValueExW(
|
||||
hKey,
|
||||
TEXT(TWINUI_PCSHELL_SB_6),
|
||||
0,
|
||||
NULL,
|
||||
&(symbols_PTRS->twinui_pcshell_PTRS[6]),
|
||||
&dwSize
|
||||
);
|
||||
RegQueryValueExW(
|
||||
hKey,
|
||||
TEXT(TWINUI_PCSHELL_SB_7),
|
||||
0,
|
||||
NULL,
|
||||
&(symbols_PTRS->twinui_pcshell_PTRS[7]),
|
||||
&dwSize
|
||||
);
|
||||
RegCloseKey(hKey);
|
||||
|
||||
RegCreateKeyExW(
|
||||
HKEY_CURRENT_USER,
|
||||
TEXT(REGPATH) L"\\" TEXT(STARTDOCKED_SB_NAME),
|
||||
0,
|
||||
NULL,
|
||||
REG_OPTION_NON_VOLATILE,
|
||||
KEY_READ,
|
||||
NULL,
|
||||
&hKey,
|
||||
&dwDisposition
|
||||
);
|
||||
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,
|
||||
wszSettingsPath
|
||||
REG_OPTION_NON_VOLATILE,
|
||||
KEY_READ,
|
||||
NULL,
|
||||
&hKey,
|
||||
&dwDisposition
|
||||
);
|
||||
dwSize = MAX_PATH;
|
||||
RegQueryValueExW(
|
||||
hKey,
|
||||
TEXT("szOSBuild"),
|
||||
0,
|
||||
NULL,
|
||||
szStoredVersion,
|
||||
&dwSize
|
||||
);
|
||||
RegCloseKey(hKey);
|
||||
if (!bNeedToDownload)
|
||||
{
|
||||
bNeedToDownload = wcscmp(szReportedVersion, szStoredVersion);
|
||||
|
@ -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
|
@ -8,6 +8,7 @@
|
||||
#include <valinet/universal/toast/toast.h>
|
||||
|
||||
#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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user