Browse Source

Improvements in configuration GUI

pull/400/head
Valentin Radu 4 years ago
parent
commit
05efe53f83
  1. 258
      ExplorerPatcher/GUI.c
  2. 106
      ExplorerPatcher/settings.reg

258
ExplorerPatcher/GUI.c

@ -335,7 +335,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
topAdj = dwMaxHeight + GUI_CAPTION_LINE_HEIGHT * dy; topAdj = dwMaxHeight + GUI_CAPTION_LINE_HEIGHT * dy;
hOldFont = SelectObject(hdcPaint, hFontCaption); hOldFont = SelectObject(hdcPaint, hFontCaption);
} }
else if (!strncmp(line, ";u ", 3)) else if (!strncmp(line, ";u ", 3) || (!strncmp(line, ";y ", 3) && !strstr(line, "\xF0\x9F")))
{ {
hOldFont = SelectObject(hdcPaint, hFontUnderline); hOldFont = SelectObject(hdcPaint, hFontUnderline);
} }
@ -513,7 +513,30 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
{ {
if (FindWindowW(L"Shell_TrayWnd", NULL)) if (FindWindowW(L"Shell_TrayWnd", NULL))
{ {
ZZRestartExplorer(); //ZZRestartExplorer(0, 0, 0, 0);
WCHAR wszPath[MAX_PATH];
ZeroMemory(wszPath, MAX_PATH * sizeof(WCHAR));
GetSystemDirectoryW(wszPath, MAX_PATH);
wcscat_s(wszPath, MAX_PATH, L"\\taskkill.exe");
ShellExecuteW(
NULL,
L"open",
wszPath,
L"/f /im explorer.exe",
NULL,
SW_SHOWMINIMIZED
);
GetWindowsDirectoryW(wszPath, MAX_PATH);
wcscat_s(wszPath, MAX_PATH, L"\\explorer.exe");
Sleep(1000);
ShellExecuteW(
NULL,
L"open",
wszPath,
NULL,
NULL,
SW_SHOWNORMAL
);
} }
else else
{ {
@ -669,7 +692,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
tabOrder++; tabOrder++;
} }
} }
else if (!strncmp(line, ";l ", 3) || !strncmp(line, ";c ", 3) || !strncmp(line, ";b ", 3) || !strncmp(line, ";i ", 3) || !strncmp(line, ";d ", 3) || !strncmp(line, ";v ", 3)) else if (!strncmp(line, ";l ", 3) || !strncmp(line, ";y ", 3) || !strncmp(line, ";c ", 3) || !strncmp(line, ";z ", 3) || !strncmp(line, ";b ", 3) || !strncmp(line, ";i ", 3) || !strncmp(line, ";d ", 3) || !strncmp(line, ";v ", 3))
{ {
ZeroMemory(text, (MAX_LINE_LENGTH + 3) * sizeof(wchar_t)); ZeroMemory(text, (MAX_LINE_LENGTH + 3) * sizeof(wchar_t));
text[0] = L'\u2795'; text[0] = L'\u2795';
@ -678,7 +701,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
MultiByteToWideChar( MultiByteToWideChar(
CP_UTF8, CP_UTF8,
MB_PRECOMPOSED, MB_PRECOMPOSED,
!strncmp(line, ";c ", 3) ? strchr(line + 3, ' ') + 1 : line + 3, !strncmp(line, ";c ", 3) || !strncmp(line, ";z ", 3) ? strchr(line + 3, ' ') + 1 : line + 3,
numChRd - 3, numChRd - 3,
text + 3, text + 3,
MAX_LINE_LENGTH MAX_LINE_LENGTH
@ -688,16 +711,17 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
if (x) *x = 0; if (x) *x = 0;
x = wcschr(text, L'\r'); x = wcschr(text, L'\r');
if (x) *x = 0; if (x) *x = 0;
if (!strncmp(line, ";c ", 3) || !strncmp(line, ";b ", 3) || !strncmp(line, ";i ", 3) || !strncmp(line, ";d ", 3) || !strncmp(line, ";v ", 3)) if (!strncmp(line, ";c ", 3) || !strncmp(line, ";z ", 3) || !strncmp(line, ";b ", 3) || !strncmp(line, ";i ", 3) || !strncmp(line, ";d ", 3) || !strncmp(line, ";v ", 3))
{ {
HMENU hMenu = NULL; HMENU hMenu = NULL;
BOOL bChoice = !strncmp(line, ";c ", 3); BOOL bChoice = !strncmp(line, ";c ", 3);
BOOL bChoiceLefted = !strncmp(line, ";z ", 3);
BOOL bInvert = !strncmp(line, ";i ", 3); BOOL bInvert = !strncmp(line, ";i ", 3);
BOOL bJustCheck = !strncmp(line, ";d ", 3); BOOL bJustCheck = !strncmp(line, ";d ", 3);
BOOL bBool = !strncmp(line, ";b ", 3); BOOL bBool = !strncmp(line, ";b ", 3);
BOOL bValue = !strncmp(line, ";v ", 3); BOOL bValue = !strncmp(line, ";v ", 3);
DWORD numChoices = 0; DWORD numChoices = 0;
if (bChoice) if (bChoice || bChoiceLefted)
{ {
char* p = strchr(line + 3, ' '); char* p = strchr(line + 3, ' ');
if (p) *p = 0; if (p) *p = 0;
@ -764,6 +788,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
wchar_t* p = wcschr(name, L'"'); wchar_t* p = wcschr(name, L'"');
if (p) *p = 0; if (p) *p = 0;
HKEY hKey = NULL; HKEY hKey = NULL;
BOOL bIsHKLM = wcsstr(section, L"HKEY_LOCAL_MACHINE");
DWORD dwDisposition; DWORD dwDisposition;
DWORD dwSize = sizeof(DWORD); DWORD dwSize = sizeof(DWORD);
DWORD value = FALSE; DWORD value = FALSE;
@ -779,12 +804,12 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
if (!bJustCheck) if (!bJustCheck)
{ {
RegCreateKeyExW( RegCreateKeyExW(
HKEY_CURRENT_USER, bIsHKLM ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER,
wcschr(section, L'\\') + 1, wcschr(section, L'\\') + 1,
0, 0,
NULL, NULL,
REG_OPTION_NON_VOLATILE, REG_OPTION_NON_VOLATILE,
KEY_READ | (hDC ? 0 : KEY_WRITE), KEY_READ | (hDC ? 0 : (!bIsHKLM ? KEY_WRITE : 0)),
NULL, NULL,
&hKey, &hKey,
&dwDisposition &dwDisposition
@ -809,10 +834,10 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
else else
{ {
RegOpenKeyExW( RegOpenKeyExW(
HKEY_CURRENT_USER, bIsHKLM ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER,
wcschr(section, L'\\') + 1, wcschr(section, L'\\') + 1,
REG_OPTION_NON_VOLATILE, REG_OPTION_NON_VOLATILE,
KEY_READ | (hDC ? 0 : KEY_WRITE), KEY_READ | (hDC ? 0 : (!bIsHKLM ? KEY_WRITE : 0)),
&hKey &hKey
); );
if (hKey == NULL || hKey == INVALID_HANDLE_VALUE) if (hKey == NULL || hKey == INVALID_HANDLE_VALUE)
@ -849,7 +874,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
buf buf
); );
} }
else if (bChoice) else if (bChoice || bChoiceLefted)
{ {
wcscat_s( wcscat_s(
text, text,
@ -881,7 +906,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
&rcTemp, &rcTemp,
DT_CALCRECT DT_CALCRECT
); );
rcText.left += rcTemp.right - rcTemp.left; rcText.left += (!bChoiceLefted ? (rcTemp.right - rcTemp.left) : 0);
for (unsigned int i = 0; i < wcslen(text); ++i) for (unsigned int i = 0; i < wcslen(text); ++i)
{ {
text[i] = text[i + 3]; text[i] = text[i + 3];
@ -901,52 +926,110 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
{ {
if (bJustCheck) if (bJustCheck)
{ {
if (hKey) if (bIsHKLM && wcsstr(section, L"Software\\Classes\\CLSID\\" _T(EP_CLSID) L"\\InprocServer32"))
{ {
RegCloseKey(hKey); WCHAR wszArgs[MAX_PATH];
hKey = NULL; if (!hKey)
RegDeleteKeyExW( {
HKEY_CURRENT_USER, wszArgs[0] = L'\"';
wcschr(section, L'\\') + 1, SHGetFolderPathW(NULL, SPECIAL_FOLDER, NULL, SHGFP_TYPE_CURRENT, wszArgs + 1);
REG_OPTION_NON_VOLATILE, wcscat_s(wszArgs, MAX_PATH, _T(APP_RELATIVE_PATH) L"\\" _T(PRODUCT_NAME) L".amd64.dll\"");
0 }
); else
{
wszArgs[0] = L'/';
wszArgs[1] = L'u';
wszArgs[2] = L' ';
wszArgs[3] = L'"';
SHGetFolderPathW(NULL, SPECIAL_FOLDER, NULL, SHGFP_TYPE_CURRENT, wszArgs + 4);
wcscat_s(wszArgs, MAX_PATH, _T(APP_RELATIVE_PATH) L"\\" _T(PRODUCT_NAME) L".amd64.dll\"");
}
wprintf(L"%s\n", wszArgs);
WCHAR wszApp[MAX_PATH * 2];
GetSystemDirectoryW(wszApp, MAX_PATH * 2);
wcscat_s(wszApp, MAX_PATH * 2, L"\\regsvr32.exe");
wprintf(L"%s\n", wszApp);
SHELLEXECUTEINFOW sei;
ZeroMemory(&sei, sizeof(SHELLEXECUTEINFOW));
sei.cbSize = sizeof(sei);
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.hwnd = NULL;
sei.hInstApp = NULL;
sei.lpVerb = L"runas";
sei.lpFile = wszApp;
sei.lpParameters = wszArgs;
sei.hwnd = NULL;
sei.nShow = SW_NORMAL;
if (ShellExecuteExW(&sei) && sei.hProcess)
{
WaitForSingleObject(sei.hProcess, INFINITE);
DWORD dwExitCode = 0;
if (GetExitCodeProcess(sei.hProcess, &dwExitCode) && !dwExitCode)
{
}
else
{
}
}
else
{
DWORD dwError = GetLastError();
if (dwError == ERROR_CANCELLED)
{
}
}
} }
else else
{ {
RegCreateKeyExW( if (hKey)
HKEY_CURRENT_USER,
wcschr(section, L'\\') + 1,
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_WRITE,
NULL,
&hKey,
&dwDisposition
);
if (hKey == NULL || hKey == INVALID_HANDLE_VALUE)
{ {
RegCloseKey(hKey);
hKey = NULL; hKey = NULL;
RegDeleteKeyExW(
bIsHKLM ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER,
wcschr(section, L'\\') + 1,
REG_OPTION_NON_VOLATILE,
0
);
} }
if (d[1] == '"') else
{ {
wchar_t* p = wcschr(d + 2, L'"'); RegCreateKeyExW(
if (p) *p = 0; bIsHKLM ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER,
RegSetValueExW( wcschr(section, L'\\') + 1,
hKey,
!wcsncmp(name, L"@", 1) ? NULL : name,
0, 0,
REG_SZ, NULL,
d + 2, REG_OPTION_NON_VOLATILE,
wcslen(d + 2) * sizeof(wchar_t) KEY_WRITE,
NULL,
&hKey,
&dwDisposition
); );
if (hKey == NULL || hKey == INVALID_HANDLE_VALUE)
{
hKey = NULL;
}
if (d[1] == '"')
{
wchar_t* p = wcschr(d + 2, L'"');
if (p) *p = 0;
RegSetValueExW(
hKey,
!wcsncmp(name, L"@", 1) ? NULL : name,
0,
REG_SZ,
d + 2,
wcslen(d + 2) * sizeof(wchar_t)
);
}
} }
} }
} }
else else
{ {
if (bChoice) if (bChoice || bChoiceLefted)
{ {
RECT rcTemp; RECT rcTemp;
rcTemp = rcText; rcTemp = rcText;
@ -958,7 +1041,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
DT_CALCRECT DT_CALCRECT
); );
POINT p; POINT p;
p.x = rcText.left + rcTemp.right - rcTemp.left; p.x = rcText.left + (bChoiceLefted ? 0 : (rcTemp.right - rcTemp.left));
p.y = rcText.bottom; p.y = rcText.bottom;
ClientToScreen( ClientToScreen(
hwnd, hwnd,
@ -998,7 +1081,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
{ {
RegCloseKey(hKey); RegCloseKey(hKey);
} }
if (bChoice) if (bChoice || bChoiceLefted)
{ {
for (unsigned int i = 0; i < numChoices; ++i) for (unsigned int i = 0; i < numChoices; ++i)
{ {
@ -1015,7 +1098,24 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
DestroyMenu(hMenu); DestroyMenu(hMenu);
} }
} }
if (!hDC && !strncmp(line, ";l ", 3)) if (hDC && (!strncmp(line, ";l ", 3) || !strncmp(line, ";y ", 3)))
{
RECT rcTemp;
rcTemp = rcText;
DrawTextW(
hdcPaint,
text,
3,
&rcTemp,
DT_CALCRECT
);
rcText.left += (!strncmp(line, ";l ", 3) ? (rcTemp.right - rcTemp.left) : 0);
for (unsigned int i = 0; i < wcslen(text); ++i)
{
text[i] = text[i + 3];
}
}
if (!hDC && (!strncmp(line, ";l ", 3) || !strncmp(line, ";y ", 3)))
{ {
RECT rcTemp; RECT rcTemp;
rcTemp = rcText; rcTemp = rcText;
@ -1037,14 +1137,52 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
if (p) *p = 0; if (p) *p = 0;
if (line[1] != 0) if (line[1] != 0)
{ {
ShellExecuteA( if (line[1] == ';')
NULL, {
"open", if (!strcmp(line + 2, ";EP_CHECK_FOR_UPDATES"))
line + 1, {
NULL, HANDLE hEvent = CreateEventW(NULL, FALSE, FALSE, L"EP_Ev_CheckForUpdates_" _T(EP_CLSID));
NULL, if (hEvent)
SW_SHOWNORMAL {
); if (GetLastError() != ERROR_ALREADY_EXISTS)
{
CloseHandle(hEvent);
}
else
{
SetEvent(hEvent);
CloseHandle(hEvent);
}
}
}
else if(!strcmp(line + 2, ";EP_INSTALL_UPDATES"))
{
HANDLE hEvent = CreateEventW(NULL, FALSE, FALSE, L"EP_Ev_InstallUpdates_" _T(EP_CLSID));
if (hEvent)
{
if (GetLastError() != ERROR_ALREADY_EXISTS)
{
CloseHandle(hEvent);
}
else
{
SetEvent(hEvent);
CloseHandle(hEvent);
}
}
}
}
else
{
ShellExecuteA(
NULL,
"open",
line + 1,
NULL,
NULL,
SW_SHOWNORMAL
);
}
} }
} }
} }
@ -1379,6 +1517,13 @@ static LRESULT CALLBACK GUI_WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
__declspec(dllexport) int ZZGUI(HWND hWnd, HINSTANCE hInstance, LPSTR lpszCmdLine, int nCmdShow) __declspec(dllexport) int ZZGUI(HWND hWnd, HINSTANCE hInstance, LPSTR lpszCmdLine, int nCmdShow)
{ {
HWND hOther = NULL;
if (hOther = FindWindowW(L"ExplorerPatcher_GUI_" _T(EP_CLSID), NULL))
{
SetForegroundWindow(hOther);
return 0;
}
HKEY hKey = NULL; HKEY hKey = NULL;
DWORD dwDisposition; DWORD dwDisposition;
DWORD dwSize = sizeof(DWORD); DWORD dwSize = sizeof(DWORD);
@ -1509,7 +1654,7 @@ __declspec(dllexport) int ZZGUI(HWND hWnd, HINSTANCE hInstance, LPSTR lpszCmdLin
wc.lpfnWndProc = GUI_WindowProc; wc.lpfnWndProc = GUI_WindowProc;
wc.hbrBackground = _this.hBackgroundBrush; wc.hbrBackground = _this.hBackgroundBrush;
wc.hInstance = hModule; wc.hInstance = hModule;
wc.lpszClassName = L"ExplorerPatcherGUI"; wc.lpszClassName = L"ExplorerPatcher_GUI_" _T(EP_CLSID);
wc.hCursor = LoadCursorW(NULL, IDC_ARROW); wc.hCursor = LoadCursorW(NULL, IDC_ARROW);
HMODULE hShell32 = LoadLibraryExW(wszPath, NULL, LOAD_LIBRARY_AS_DATAFILE); HMODULE hShell32 = LoadLibraryExW(wszPath, NULL, LOAD_LIBRARY_AS_DATAFILE);
if (hShell32) if (hShell32)
@ -1569,7 +1714,7 @@ __declspec(dllexport) int ZZGUI(HWND hWnd, HINSTANCE hInstance, LPSTR lpszCmdLin
} }
HWND hwnd = CreateWindowEx( HWND hwnd = CreateWindowEx(
NULL, NULL,
L"ExplorerPatcherGUI", L"ExplorerPatcher_GUI_" _T(EP_CLSID),
title, title,
WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX, WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX,
0, 0,
@ -1582,6 +1727,7 @@ __declspec(dllexport) int ZZGUI(HWND hWnd, HINSTANCE hInstance, LPSTR lpszCmdLin
{ {
return 1; return 1;
} }
if (IsThemeActive()) if (IsThemeActive())
{ {
if (bIsCompositionEnabled) if (bIsCompositionEnabled)

106
ExplorerPatcher/settings.reg

@ -4,11 +4,13 @@
;T Taskbar ;T Taskbar
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher]
;b Enable Windows 10 taskbar * ;z 2 Taskbar style *
;x 0 Windows 11 (default)
;x 1 Windows 10
"OldTaskbar"=dword:00000001 "OldTaskbar"=dword:00000001
;t The following settings only apply to the Windows 10 taskbar: ;y More taskbar options in the Settings app 🡕
;l Enable missing system tray icons ;ms-settings:taskbar
;shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}\SystemIcons ;t The following additional settings only apply to the Windows 10 taskbar:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
;c 3 Combine taskbar icons on main taskbar ;c 3 Combine taskbar icons on main taskbar
;x 0 Always combine ;x 0 Always combine
@ -41,11 +43,13 @@
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
;b Show Desktop button ;b Show Desktop button
"TaskbarSD"=dword:00000001 "TaskbarSD"=dword:00000001
;t [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher]
;b Add shortcut to program settings in Win+X menu
"PropertiesInWinX"=dword:00000001
;t ;t
;T System tray ;T System tray
;l Enable missing system tray icons ;y Enable missing system tray icons 🡕
;shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}\SystemIcons ;shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}\SystemIcons
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
;b Show seconds in the clock ;b Show seconds in the clock
@ -107,29 +111,31 @@
;d Disable the Windows 11 context menu * ;d Disable the Windows 11 context menu *
@="" @=""
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher]
;i Use immersive menus when displaying Windows 10 context menus ;i Use immersive menus when displaying Windows 10 context menus **
"DisableImmersiveContextMenu"=dword:00000000 "DisableImmersiveContextMenu"=dword:00000000
[-HKEY_CURRENT_USER\Software\Classes\CLSID\{056440FD-8568-48e7-A632-72157243B55B}\InprocServer32] [-HKEY_CURRENT_USER\Software\Classes\CLSID\{056440FD-8568-48e7-A632-72157243B55B}\InprocServer32]
;d Disable navigation bar ;d Disable navigation bar **
@="" @=""
[-HKEY_CURRENT_USER\Software\Classes\CLSID\{1d64637d-31e9-4b06-9124-e83fb178ac6e}\TreatAs] [-HKEY_CURRENT_USER\Software\Classes\CLSID\{1d64637d-31e9-4b06-9124-e83fb178ac6e}\TreatAs]
;d Disable modern search bar ;d Disable modern search bar
@="{64bc32b5-4eec-4de7-972d-bd8bd0324537}" @="{64bc32b5-4eec-4de7-972d-bd8bd0324537}"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher]
;b Hide search bar completely ;b Hide search bar completely **
"HideExplorerSearchBar"=dword:00000000 "HideExplorerSearchBar"=dword:00000000
;p 2 ;p 2
;b Mica effect on title bar ;b Mica effect on title bar
"MicaEffectOnTitlebar"=dword:00000000 "MicaEffectOnTitlebar"=dword:00000000
[-HKEY_CURRENT_USER\Software\Classes\CLSID\{1eeb5b5a-06fb-4732-96b3-975c0194eb39}\InprocServer32] [-HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{D17F1E1A-5919-4427-8F89-A1A8503CA3EB}\InprocServer32]
;d Enable legacy list view * ;d Register as shell extension
@="" @="{64bc32b5-4eec-4de7-972d-bd8bd0324537}"
;t ________________________
;e For the settings marked with (**) to work in Open/Save file dialogs as well, register this
;e utility as shell extension using the option above.
;y Learn more 🡕
;https://github.com/valinet/ExplorerPatcher/wiki/Using-ExplorerPatcher-as-shell-extension
;T Start menu ;T Start menu
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher]
;b Enable Start menu support
"HookStartMenu"=dword:00000001
;t The following settings only work when the above is enabled:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StartPage] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StartPage]
;i Open Start on monitor containing the cursor ;i Open Start on monitor containing the cursor
"MonitorOverride"=dword:00000001 "MonitorOverride"=dword:00000001
@ -137,11 +143,6 @@
"OpenAtLogon"=dword:00000000 "OpenAtLogon"=dword:00000000
;b Open Start in All apps by default ;b Open Start in All apps by default
"MakeAllAppsDefault"=dword:00000000 "MakeAllAppsDefault"=dword:00000000
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
;c 2 Location on screen
;x 0 Left
;x 1 Center (default)
"TaskbarAl"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher]
;c 22 Maximum number of frequent apps to show ;c 22 Maximum number of frequent apps to show
;x 0 None ;x 0 None
@ -167,10 +168,16 @@
;x 20 20 ;x 20 20
;x 99999 Unlimited ;x 99999 Unlimited
"Start_MaximumFrequentApps"=dword:00000006 "Start_MaximumFrequentApps"=dword:00000006
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
;c 2 Position on screen
;x 0 Left
;x 1 Center (default)
"TaskbarAl"=dword:00000001
;T Window switcher ;T Window switcher
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]
;c 3 Window switcher (Alt+Tab) style * ;z 3 Window switcher (Alt+Tab) style *
;x 0 Windows 11 ;x 0 Windows 11
;x 2 Windows 10 ;x 2 Windows 10
;x 1 Windows NT ;x 1 Windows NT
@ -276,6 +283,7 @@
;x 500 500 ms ;x 500 500 ms
"ShowDelay"=dword:00000064 "ShowDelay"=dword:00000064
;T Other ;T Other
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher]
;b Open clock flyout when pressing Win+C instead of Microsoft Teams ;b Open clock flyout when pressing Win+C instead of Microsoft Teams
@ -292,9 +300,28 @@
;b Show Command Prompt instead of PowerShell in Win+X menu * ;b Show Command Prompt instead of PowerShell in Win+X menu *
"DontUsePowerShellOnWinX"=dword:00000000 "DontUsePowerShellOnWinX"=dword:00000000
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher]
;b Remove shortcut key from menu item ;b Remove shortcut key from program settings item in Win+X menu
"NoMenuAccelerator"=dword:00000000 "NoMenuAccelerator"=dword:00000000
;T Updates
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher]
;z 3 When File Explorer starts
;x 1 Notify about available updates (default)
;x 0 Prompt to install available updates
;x 2 Do not check for updates
"UpdatePolicy"=dword:00000001
;t ________________________
;y Check for updates
;;;EP_CHECK_FOR_UPDATES
;y Install latest version
;;;EP_INSTALL_UPDATES
;y Read about changes in the latest releases 🡕
;https://github.com/valinet/ExplorerPatcher/blob/master/CHANGELOG.md
;y Learn more 🡕
;https://github.com/valinet/ExplorerPatcher/wiki/Configure-updates
;T Advanced ;T Advanced
;t Only change these settings if you know what you are doing. You've been warned! ;t Only change these settings if you know what you are doing. You've been warned!
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher]
@ -302,6 +329,18 @@
"AllocConsole"=dword:00000000 "AllocConsole"=dword:00000000
;b Dump memory leaks ;b Dump memory leaks
"Memcheck"=dword:00000000 "Memcheck"=dword:00000000
[HKEY_CURRENT_USER\Control Panel\Desktop]
;b Show Windows build info on the desktop *
"PaintDesktopversion"=dword:00000000
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher]
;b Enable advanced mitigations for correct rendering using classic theme *
"ClassicThemeMitigations"=dword:00000000
[-HKEY_CURRENT_USER\Software\Classes\CLSID\{1eeb5b5a-06fb-4732-96b3-975c0194eb39}\InprocServer32]
;d Enable SysListView32 for Explorer views *
@=""
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher]
;i Do not hook Start menu from main Explorer process (permanently disabled) *
"HookStartMenu"=dword:00000001
;c 12 Supplimentary delay at logon * ;c 12 Supplimentary delay at logon *
;x 0 None (default) ;x 0 None (default)
;x 300 300 ms ;x 300 300 ms
@ -316,14 +355,9 @@
;x 8000 8 seconds ;x 8000 8 seconds
;x 10000 10 seconds ;x 10000 10 seconds
"ExplorerReadyDelay"=dword:00000000 "ExplorerReadyDelay"=dword:00000000
[HKEY_CURRENT_USER\Control Panel\Desktop]
;b Show Windows build info on the desktop *
"PaintDesktopversion"=dword:00000000
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher]
;b Enable advanced mitigations for correct rendering using classic theme *
"ClassicThemeMitigations"=dword:00000000
;a Only change the following option if you have a single taskbar !!! ;a Only change the following option if you have a single taskbar !!!
;c 21 Always show main taskbar on this monitor * (experimental) ;c 21 Always show main taskbar on this monitor * (not working)
;x 0 Primary (default) ;x 0 Primary (default)
;x 1 1 ;x 1 1
;x 2 2 ;x 2 2
@ -346,6 +380,10 @@
;x 19 19 ;x 19 19
;x 20 20 ;x 20 20
"TaskbarMonitorOverride"=dword:00000000 "TaskbarMonitorOverride"=dword:00000000
;t ________________________
;e Only change these settings after reading the documentation about them.
;y Learn more 🡕
;https://github.com/valinet/ExplorerPatcher/wiki/About-advanced-settings
;T About ;T About
@ -355,14 +393,16 @@
;e ;e
;e This project aims to bring back a productive working environment on Windows 11. ;e This project aims to bring back a productive working environment on Windows 11.
;t Proudly programmed by Valentin-Gabriel Radu. ;t Proudly programmed by Valentin-Gabriel Radu.
;l Visit project GitHub (https://github.com/valinet) ;y Visit project GitHub (https://github.com/valinet) 🡕
;https://github.com/valinet ;https://github.com/valinet
;l Visit web site (https://www.valinet.ro) ;y Visit web site (https://www.valinet.ro) 🡕
;https://www.valinet.ro ;https://www.valinet.ro
;l E-mail author (valentingabrielradu@gmail.com) ;y E-mail author (valentingabrielradu@gmail.com) 🡕
;mailto:valentingabrielradu@gmail.com ;mailto:valentingabrielradu@gmail.com
;l Donate (using PayPal) ;y Donate (using PayPal) 🡕
;https://www.paypal.com/donate?business=valentingabrielradu%40gmail.com&no_recurring=0&item_name=ExplorerPatcher&currency_code=EUR ;https://www.paypal.com/donate?business=valentingabrielradu%40gmail.com&no_recurring=0&item_name=ExplorerPatcher&currency_code=EUR
;y Frequently Asked Questions 🡕
;https://github.com/valinet/ExplorerPatcher/wiki/Frequently-asked-questions
;f ;f
;t Settings marked with an (*) require restarting File Explorer. ;t Settings marked with an (*) require restarting File Explorer.

Loading…
Cancel
Save