Browse Source

Properties GUI is restarted after setup

pull/400/head
Valentin Radu 4 years ago
parent
commit
8f9ecf68e4
  1. 37
      ExplorerPatcher/dllmain.c
  2. 62
      ep_setup/ep_setup.c

37
ExplorerPatcher/dllmain.c

@ -3129,7 +3129,7 @@ DWORD WindowSwitcher(DWORD unused)
void WINAPI LoadSettings(BOOL bIsExplorer) void WINAPI LoadSettings(BOOL bIsExplorer)
{ {
HKEY hKey = NULL; HKEY hKey = NULL;
DWORD dwSize = 0; DWORD dwSize = 0, dwTemp = 0;
RegCreateKeyExW( RegCreateKeyExW(
HKEY_CURRENT_USER, HKEY_CURRENT_USER,
@ -3137,7 +3137,7 @@ void WINAPI LoadSettings(BOOL bIsExplorer)
0, 0,
NULL, NULL,
REG_OPTION_NON_VOLATILE, REG_OPTION_NON_VOLATILE,
KEY_READ | KEY_WOW64_64KEY, KEY_READ | KEY_WOW64_64KEY | KEY_WRITE,
NULL, NULL,
&hKey, &hKey,
NULL NULL
@ -3157,17 +3157,17 @@ void WINAPI LoadSettings(BOOL bIsExplorer)
&bAllocConsole, &bAllocConsole,
&dwSize &dwSize
); );
DWORD bMemcheck = FALSE;
dwSize = sizeof(DWORD); dwSize = sizeof(DWORD);
dwTemp = 0;
RegQueryValueExW( RegQueryValueExW(
hKey, hKey,
TEXT("Memcheck"), TEXT("Memcheck"),
0, 0,
NULL, NULL,
&bMemcheck, &dwTemp,
&dwSize &dwSize
); );
if (bMemcheck) if (dwTemp)
{ {
#if defined(DEBUG) | defined(_DEBUG) #if defined(DEBUG) | defined(_DEBUG)
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
@ -3178,13 +3178,13 @@ void WINAPI LoadSettings(BOOL bIsExplorer)
_CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT); _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT);
_CrtDumpMemoryLeaks(); _CrtDumpMemoryLeaks();
#endif #endif
bMemcheck = FALSE; dwTemp = 0;
RegSetValueExW( RegSetValueExW(
hKey, hKey,
TEXT("Memcheck"), TEXT("Memcheck"),
0, 0,
REG_DWORD, REG_DWORD,
&bMemcheck, &dwTemp,
sizeof(DWORD) sizeof(DWORD)
); );
} }
@ -3418,6 +3418,29 @@ void WINAPI LoadSettings(BOOL bIsExplorer)
&bToolbarSeparators, &bToolbarSeparators,
&dwSize &dwSize
); );
dwSize = sizeof(DWORD);
dwTemp = 0;
RegQueryValueExW(
hKey,
TEXT("OpenPropertiesAtNextStart"),
0,
NULL,
&dwTemp,
&dwSize
);
if (dwTemp)
{
LaunchPropertiesGUI(hModule);
dwTemp = 0;
RegSetValueExW(
hKey,
TEXT("OpenPropertiesAtNextStart"),
0,
REG_DWORD,
&dwTemp,
sizeof(DWORD)
);
}
RegCloseKey(hKey); RegCloseKey(hKey);
} }

62
ep_setup/ep_setup.c

@ -364,14 +364,66 @@ int WINAPI wWinMain(
GetSystemDirectoryW(wszPath, MAX_PATH); GetSystemDirectoryW(wszPath, MAX_PATH);
wcscat_s(wszPath, MAX_PATH, L"\\taskkill.exe"); wcscat_s(wszPath, MAX_PATH, L"\\taskkill.exe");
ShellExecuteW( SHELLEXECUTEINFOW sei;
ZeroMemory(&sei, sizeof(SHELLEXECUTEINFOW));
sei.cbSize = sizeof(sei);
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.hwnd = NULL;
sei.hInstApp = NULL;
sei.lpVerb = NULL;
sei.lpFile = wszPath;
sei.lpParameters = L"/f /im explorer.exe";
sei.hwnd = NULL;
sei.nShow = SW_SHOWMINIMIZED;
if (ShellExecuteExW(&sei) && sei.hProcess)
{
WaitForSingleObject(sei.hProcess, INFINITE);
CloseHandle(sei.hProcess);
}
DWORD dwGUIPid = 0;
GetWindowThreadProcessId(FindWindowW(L"ExplorerPatcher_GUI_" _T(EP_CLSID), NULL), &dwGUIPid);
if (dwGUIPid)
{
HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwGUIPid);
if (hProcess)
{
TerminateProcess(hProcess, 0);
CloseHandle(hProcess);
HKEY hKey = NULL;
DWORD dwSize = 0;
RegCreateKeyExW(
HKEY_CURRENT_USER,
TEXT(REGPATH),
0,
NULL, NULL,
L"open", REG_OPTION_NON_VOLATILE,
wszPath, KEY_READ | KEY_WOW64_64KEY | KEY_WRITE,
L"/f /im explorer.exe",
NULL, NULL,
SW_SHOWMINIMIZED &hKey,
NULL
); );
if (hKey == NULL || hKey == INVALID_HANDLE_VALUE)
{
hKey = NULL;
}
if (hKey)
{
dwSize = TRUE;
RegSetValueExW(
hKey,
TEXT("OpenPropertiesAtNextStart"),
0,
REG_DWORD,
&dwSize,
sizeof(DWORD)
);
RegCloseKey(hKey);
}
}
}
if (bOk) if (bOk)
{ {

Loading…
Cancel
Save