7 changed files with 598 additions and 2 deletions
@ -0,0 +1,31 @@
@@ -0,0 +1,31 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00 |
||||
# Visual Studio Version 16 |
||||
VisualStudioVersion = 16.0.31410.357 |
||||
MinimumVisualStudioVersion = 10.0.40219.1 |
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ExplorerPatcher", "ExplorerPatcher\ExplorerPatcher.vcxproj", "{DED2A41B-0EA8-4D8E-8A02-31A29EF9F91C}" |
||||
EndProject |
||||
Global |
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
||||
Debug|x64 = Debug|x64 |
||||
Debug|x86 = Debug|x86 |
||||
Release|x64 = Release|x64 |
||||
Release|x86 = Release|x86 |
||||
EndGlobalSection |
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
||||
{DED2A41B-0EA8-4D8E-8A02-31A29EF9F91C}.Debug|x64.ActiveCfg = Debug|x64 |
||||
{DED2A41B-0EA8-4D8E-8A02-31A29EF9F91C}.Debug|x64.Build.0 = Debug|x64 |
||||
{DED2A41B-0EA8-4D8E-8A02-31A29EF9F91C}.Debug|x86.ActiveCfg = Debug|Win32 |
||||
{DED2A41B-0EA8-4D8E-8A02-31A29EF9F91C}.Debug|x86.Build.0 = Debug|Win32 |
||||
{DED2A41B-0EA8-4D8E-8A02-31A29EF9F91C}.Release|x64.ActiveCfg = Release|x64 |
||||
{DED2A41B-0EA8-4D8E-8A02-31A29EF9F91C}.Release|x64.Build.0 = Release|x64 |
||||
{DED2A41B-0EA8-4D8E-8A02-31A29EF9F91C}.Release|x86.ActiveCfg = Release|Win32 |
||||
{DED2A41B-0EA8-4D8E-8A02-31A29EF9F91C}.Release|x86.Build.0 = Release|Win32 |
||||
EndGlobalSection |
||||
GlobalSection(SolutionProperties) = preSolution |
||||
HideSolutionNode = FALSE |
||||
EndGlobalSection |
||||
GlobalSection(ExtensibilityGlobals) = postSolution |
||||
SolutionGuid = {1D4372C5-52FF-4B30-9C71-5ED6F36C1966} |
||||
EndGlobalSection |
||||
EndGlobal |
||||
@ -0,0 +1,157 @@
@@ -0,0 +1,157 @@
|
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
<ItemGroup Label="ProjectConfigurations"> |
||||
<ProjectConfiguration Include="Debug|Win32"> |
||||
<Configuration>Debug</Configuration> |
||||
<Platform>Win32</Platform> |
||||
</ProjectConfiguration> |
||||
<ProjectConfiguration Include="Release|Win32"> |
||||
<Configuration>Release</Configuration> |
||||
<Platform>Win32</Platform> |
||||
</ProjectConfiguration> |
||||
<ProjectConfiguration Include="Debug|x64"> |
||||
<Configuration>Debug</Configuration> |
||||
<Platform>x64</Platform> |
||||
</ProjectConfiguration> |
||||
<ProjectConfiguration Include="Release|x64"> |
||||
<Configuration>Release</Configuration> |
||||
<Platform>x64</Platform> |
||||
</ProjectConfiguration> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<ClCompile Include="main.c" /> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<ClInclude Include="resource.h" /> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<ResourceCompile Include="resource.rc" /> |
||||
</ItemGroup> |
||||
<PropertyGroup Label="Globals"> |
||||
<VCProjectVersion>16.0</VCProjectVersion> |
||||
<Keyword>Win32Proj</Keyword> |
||||
<ProjectGuid>{ded2a41b-0ea8-4d8e-8a02-31a29ef9f91c}</ProjectGuid> |
||||
<RootNamespace>ExplorerPatcher</RootNamespace> |
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion> |
||||
</PropertyGroup> |
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> |
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> |
||||
<ConfigurationType>Application</ConfigurationType> |
||||
<UseDebugLibraries>true</UseDebugLibraries> |
||||
<PlatformToolset>v142</PlatformToolset> |
||||
<CharacterSet>Unicode</CharacterSet> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> |
||||
<ConfigurationType>Application</ConfigurationType> |
||||
<UseDebugLibraries>false</UseDebugLibraries> |
||||
<PlatformToolset>v142</PlatformToolset> |
||||
<WholeProgramOptimization>true</WholeProgramOptimization> |
||||
<CharacterSet>Unicode</CharacterSet> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> |
||||
<ConfigurationType>Application</ConfigurationType> |
||||
<UseDebugLibraries>true</UseDebugLibraries> |
||||
<PlatformToolset>v142</PlatformToolset> |
||||
<CharacterSet>Unicode</CharacterSet> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> |
||||
<ConfigurationType>Application</ConfigurationType> |
||||
<UseDebugLibraries>false</UseDebugLibraries> |
||||
<PlatformToolset>v142</PlatformToolset> |
||||
<WholeProgramOptimization>true</WholeProgramOptimization> |
||||
<CharacterSet>Unicode</CharacterSet> |
||||
</PropertyGroup> |
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> |
||||
<ImportGroup Label="ExtensionSettings"> |
||||
</ImportGroup> |
||||
<ImportGroup Label="Shared"> |
||||
</ImportGroup> |
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
||||
</ImportGroup> |
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
||||
</ImportGroup> |
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> |
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
||||
</ImportGroup> |
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> |
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
||||
</ImportGroup> |
||||
<PropertyGroup Label="UserMacros" /> |
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
||||
<LinkIncremental>true</LinkIncremental> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
||||
<LinkIncremental>false</LinkIncremental> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> |
||||
<LinkIncremental>true</LinkIncremental> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> |
||||
<LinkIncremental>false</LinkIncremental> |
||||
</PropertyGroup> |
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
||||
<ClCompile> |
||||
<WarningLevel>Level3</WarningLevel> |
||||
<SDLCheck>true</SDLCheck> |
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
<ConformanceMode>true</ConformanceMode> |
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> |
||||
</ClCompile> |
||||
<Link> |
||||
<SubSystem>Windows</SubSystem> |
||||
<GenerateDebugInformation>true</GenerateDebugInformation> |
||||
</Link> |
||||
</ItemDefinitionGroup> |
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
||||
<ClCompile> |
||||
<WarningLevel>Level3</WarningLevel> |
||||
<FunctionLevelLinking>true</FunctionLevelLinking> |
||||
<IntrinsicFunctions>true</IntrinsicFunctions> |
||||
<SDLCheck>true</SDLCheck> |
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
<ConformanceMode>true</ConformanceMode> |
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> |
||||
</ClCompile> |
||||
<Link> |
||||
<SubSystem>Windows</SubSystem> |
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding> |
||||
<OptimizeReferences>true</OptimizeReferences> |
||||
<GenerateDebugInformation>true</GenerateDebugInformation> |
||||
</Link> |
||||
</ItemDefinitionGroup> |
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> |
||||
<ClCompile> |
||||
<WarningLevel>Level3</WarningLevel> |
||||
<SDLCheck>true</SDLCheck> |
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
<ConformanceMode>true</ConformanceMode> |
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> |
||||
</ClCompile> |
||||
<Link> |
||||
<SubSystem>Windows</SubSystem> |
||||
<GenerateDebugInformation>true</GenerateDebugInformation> |
||||
</Link> |
||||
</ItemDefinitionGroup> |
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> |
||||
<ClCompile> |
||||
<WarningLevel>Level3</WarningLevel> |
||||
<FunctionLevelLinking>true</FunctionLevelLinking> |
||||
<IntrinsicFunctions>true</IntrinsicFunctions> |
||||
<SDLCheck>true</SDLCheck> |
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
<ConformanceMode>true</ConformanceMode> |
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> |
||||
</ClCompile> |
||||
<Link> |
||||
<SubSystem>Windows</SubSystem> |
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding> |
||||
<OptimizeReferences>true</OptimizeReferences> |
||||
<GenerateDebugInformation>true</GenerateDebugInformation> |
||||
</Link> |
||||
</ItemDefinitionGroup> |
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
||||
<ImportGroup Label="ExtensionTargets"> |
||||
</ImportGroup> |
||||
</Project> |
||||
@ -0,0 +1,32 @@
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
<ItemGroup> |
||||
<Filter Include="Source Files"> |
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> |
||||
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions> |
||||
</Filter> |
||||
<Filter Include="Header Files"> |
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> |
||||
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions> |
||||
</Filter> |
||||
<Filter Include="Resource Files"> |
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> |
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> |
||||
</Filter> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<ClCompile Include="main.c"> |
||||
<Filter>Source Files</Filter> |
||||
</ClCompile> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<ClInclude Include="resource.h"> |
||||
<Filter>Header Files</Filter> |
||||
</ClInclude> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<ResourceCompile Include="resource.rc"> |
||||
<Filter>Resource Files</Filter> |
||||
</ResourceCompile> |
||||
</ItemGroup> |
||||
</Project> |
||||
@ -0,0 +1,254 @@
@@ -0,0 +1,254 @@
|
||||
#pragma comment(linker,"\"/manifestdependency:type='win32' \ |
||||
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \ |
||||
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") |
||||
#include <Windows.h> |
||||
#include <stdio.h> |
||||
#include <tlhelp32.h> |
||||
#include <Psapi.h> |
||||
|
||||
#define APP_NAME TEXT("Windows Explorer") |
||||
#define NOP 0x90 |
||||
#define PATCH_OFFSET 0x8cb33 |
||||
|
||||
// https://stackoverflow.com/questions/8046097/how-to-check-if-a-process-has-the-administrative-rights
|
||||
BOOL IsElevated() { |
||||
BOOL fRet = FALSE; |
||||
HANDLE hToken = NULL; |
||||
if (OpenProcessToken( |
||||
GetCurrentProcess(), |
||||
TOKEN_QUERY, |
||||
&hToken |
||||
)) |
||||
{ |
||||
TOKEN_ELEVATION Elevation; |
||||
DWORD cbSize = sizeof(TOKEN_ELEVATION); |
||||
if (GetTokenInformation( |
||||
hToken, |
||||
TokenElevation, |
||||
&Elevation, |
||||
sizeof(Elevation), |
||||
&cbSize |
||||
)) { |
||||
fRet = Elevation.TokenIsElevated; |
||||
} |
||||
} |
||||
if (hToken) { |
||||
CloseHandle(hToken); |
||||
} |
||||
return fRet; |
||||
} |
||||
|
||||
int install_uninstall() |
||||
{ |
||||
TCHAR buffer[200], szFileName[MAX_PATH], szReadName[MAX_PATH] = { 0 }; |
||||
HKEY hKey; |
||||
DWORD dwReadBytes; |
||||
|
||||
if (IsElevated()) |
||||
{ |
||||
dwReadBytes = MAX_PATH; |
||||
GetModuleFileName(NULL, szFileName, MAX_PATH); |
||||
if (RegOpenKeyEx( |
||||
HKEY_LOCAL_MACHINE, |
||||
TEXT("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"), |
||||
0, |
||||
KEY_READ | KEY_SET_VALUE, |
||||
&hKey |
||||
) != ERROR_SUCCESS) |
||||
{ |
||||
goto error_setup; |
||||
} |
||||
RegGetValue( |
||||
hKey, |
||||
NULL, |
||||
TEXT("Taskman"), |
||||
RRF_RT_REG_SZ, |
||||
NULL, |
||||
szReadName, |
||||
(LPDWORD)(&dwReadBytes) |
||||
); |
||||
if (!wcscmp(szFileName, szReadName)) |
||||
{ |
||||
if (RegDeleteValue( |
||||
hKey, |
||||
TEXT("Taskman") |
||||
) != ERROR_SUCCESS) |
||||
{ |
||||
goto error_setup; |
||||
} |
||||
MessageBox( |
||||
0, |
||||
TEXT("Uninstall successful."), |
||||
APP_NAME, |
||||
MB_ICONINFORMATION |
||||
); |
||||
} |
||||
else |
||||
{ |
||||
if (RegSetValueEx( |
||||
hKey, |
||||
TEXT("Taskman"), |
||||
0, |
||||
REG_SZ, |
||||
(const BYTE*)szFileName, (DWORD)( |
||||
#ifdef UNICODE |
||||
wcslen(szFileName) |
||||
#else |
||||
strlen(szFileName) |
||||
#endif |
||||
* sizeof(TCHAR)) |
||||
) != ERROR_SUCCESS) |
||||
{ |
||||
goto error_setup; |
||||
} |
||||
MessageBox( |
||||
0, |
||||
TEXT("Successfully installed Taskman registry key."), |
||||
APP_NAME, |
||||
MB_ICONINFORMATION |
||||
); |
||||
} |
||||
return 1; |
||||
error_setup: |
||||
#ifdef UNICODE |
||||
swprintf(buffer, 200, |
||||
#else |
||||
sprintf(buffer, |
||||
#endif |
||||
TEXT("An error occured when servicing the product (%d)."), GetLastError()); |
||||
MessageBox( |
||||
0, |
||||
buffer, |
||||
APP_NAME, |
||||
MB_ICONERROR |
||||
); |
||||
return -1; |
||||
} |
||||
else |
||||
{ |
||||
return 0; |
||||
} |
||||
} |
||||
|
||||
int WINAPI wWinMain( |
||||
_In_ HINSTANCE hInstance, |
||||
_In_opt_ HINSTANCE hPrevInstance, |
||||
_In_ LPWSTR lpCmdLine, |
||||
_In_ int nShowCmd |
||||
) |
||||
{ |
||||
HANDLE hExplorer, hSnapshot; |
||||
DWORD dwExplorerPID = 0, dwOldValue; |
||||
SIZE_T dwNumberOfBytes; |
||||
uintptr_t dwInjectedAddr = 0; |
||||
const char szPayload[6] = { NOP, NOP, NOP, NOP, NOP, NOP }; |
||||
PROCESSENTRY32 pe32 = { 0 }; |
||||
MODULEENTRY32 me32 = { 0 }; |
||||
THREADENTRY32 th32 = { 0 }; |
||||
TCHAR szExplorerPath[MAX_PATH]; |
||||
|
||||
if (install_uninstall()) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
while (TRUE) |
||||
{ |
||||
pe32.dwSize = sizeof(PROCESSENTRY32); |
||||
hSnapshot = CreateToolhelp32Snapshot( |
||||
TH32CS_SNAPPROCESS, |
||||
0 |
||||
); |
||||
if (Process32First(hSnapshot, &pe32) == TRUE) |
||||
{ |
||||
do |
||||
{ |
||||
if (!wcscmp(pe32.szExeFile, TEXT("explorer.exe"))) |
||||
{ |
||||
dwExplorerPID = pe32.th32ProcessID; |
||||
DebugActiveProcess(dwExplorerPID); |
||||
break; |
||||
} |
||||
} while (Process32Next(hSnapshot, &pe32) == TRUE); |
||||
} |
||||
CloseHandle(hSnapshot); |
||||
if (!dwExplorerPID) |
||||
{ |
||||
break; |
||||
} |
||||
|
||||
if ((hExplorer = OpenProcess( |
||||
PROCESS_VM_READ | |
||||
PROCESS_VM_WRITE | |
||||
PROCESS_QUERY_INFORMATION | |
||||
PROCESS_VM_OPERATION | |
||||
SYNCHRONIZE, |
||||
FALSE, |
||||
dwExplorerPID |
||||
)) != NULL && GetModuleFileNameEx( |
||||
hExplorer, |
||||
NULL, |
||||
szExplorerPath, |
||||
sizeof(szExplorerPath) |
||||
)) |
||||
{ |
||||
CharLower(szExplorerPath); |
||||
me32.dwSize = sizeof(MODULEENTRY32); |
||||
hSnapshot = CreateToolhelp32Snapshot( |
||||
TH32CS_SNAPMODULE, |
||||
dwExplorerPID |
||||
); |
||||
if (Module32First(hSnapshot, &me32) == TRUE) |
||||
{ |
||||
do |
||||
{ |
||||
if (!wcscmp(CharLower(me32.szExePath), szExplorerPath)) |
||||
{ |
||||
dwInjectedAddr = (uintptr_t)me32.modBaseAddr + PATCH_OFFSET; |
||||
break; |
||||
} |
||||
} while (Module32Next(hSnapshot, &me32) == TRUE); |
||||
} |
||||
CloseHandle(hSnapshot); |
||||
|
||||
if (dwInjectedAddr) |
||||
{ |
||||
VirtualProtectEx( |
||||
hExplorer, |
||||
(LPVOID)dwInjectedAddr, |
||||
sizeof(szPayload), |
||||
PAGE_EXECUTE_READWRITE, |
||||
&dwOldValue |
||||
); |
||||
WriteProcessMemory( |
||||
hExplorer, |
||||
(LPVOID)dwInjectedAddr, |
||||
szPayload, |
||||
sizeof(szPayload), |
||||
&dwNumberOfBytes |
||||
); |
||||
VirtualProtectEx( |
||||
hExplorer, |
||||
(LPVOID)dwInjectedAddr, |
||||
sizeof(szPayload), |
||||
dwOldValue, |
||||
(PDWORD)(&dwNumberOfBytes) |
||||
); |
||||
DebugActiveProcessStop(dwExplorerPID); |
||||
/*
|
||||
WaitForSingleObject( |
||||
hExplorer, |
||||
INFINITE |
||||
); |
||||
*/ |
||||
} |
||||
CloseHandle(hExplorer); |
||||
} |
||||
else |
||||
{ |
||||
DebugActiveProcessStop(dwExplorerPID); |
||||
} |
||||
return 0; |
||||
} |
||||
return 0; |
||||
} |
||||
@ -0,0 +1,14 @@
@@ -0,0 +1,14 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Visual C++ generated include file.
|
||||
// Used by resource.rc
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED |
||||
#ifndef APSTUDIO_READONLY_SYMBOLS |
||||
#define _APS_NEXT_RESOURCE_VALUE 101 |
||||
#define _APS_NEXT_COMMAND_VALUE 40001 |
||||
#define _APS_NEXT_CONTROL_VALUE 1001 |
||||
#define _APS_NEXT_SYMED_VALUE 101 |
||||
#endif |
||||
#endif |
||||
@ -0,0 +1,100 @@
@@ -0,0 +1,100 @@
|
||||
// Microsoft Visual C++ generated resource script. |
||||
// |
||||
#include "resource.h" |
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS |
||||
///////////////////////////////////////////////////////////////////////////// |
||||
// |
||||
// Generated from the TEXTINCLUDE 2 resource. |
||||
// |
||||
#include "winres.h" |
||||
|
||||
///////////////////////////////////////////////////////////////////////////// |
||||
#undef APSTUDIO_READONLY_SYMBOLS |
||||
|
||||
///////////////////////////////////////////////////////////////////////////// |
||||
// English (United States) resources |
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) |
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US |
||||
#pragma code_page(1252) |
||||
|
||||
#ifdef APSTUDIO_INVOKED |
||||
///////////////////////////////////////////////////////////////////////////// |
||||
// |
||||
// TEXTINCLUDE |
||||
// |
||||
|
||||
1 TEXTINCLUDE |
||||
BEGIN |
||||
"resource.h\0" |
||||
END |
||||
|
||||
2 TEXTINCLUDE |
||||
BEGIN |
||||
"#include ""winres.h""\r\n" |
||||
"\0" |
||||
END |
||||
|
||||
3 TEXTINCLUDE |
||||
BEGIN |
||||
"\r\n" |
||||
"\0" |
||||
END |
||||
|
||||
#endif // APSTUDIO_INVOKED |
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////// |
||||
// |
||||
// Version |
||||
// |
||||
|
||||
VS_VERSION_INFO VERSIONINFO |
||||
FILEVERSION 22000,1,0,0 |
||||
PRODUCTVERSION 22000,1,0,0 |
||||
FILEFLAGSMASK 0x3fL |
||||
#ifdef _DEBUG |
||||
FILEFLAGS 0x1L |
||||
#else |
||||
FILEFLAGS 0x0L |
||||
#endif |
||||
FILEOS 0x40004L |
||||
FILETYPE 0x1L |
||||
FILESUBTYPE 0x0L |
||||
BEGIN |
||||
BLOCK "StringFileInfo" |
||||
BEGIN |
||||
BLOCK "040904b0" |
||||
BEGIN |
||||
VALUE "CompanyName", "VALINET Solutions SRL" |
||||
VALUE "FileDescription", "Explorer Patcher" |
||||
VALUE "FileVersion", "22000.1.0.0" |
||||
VALUE "InternalName", "Explorer.exe" |
||||
VALUE "LegalCopyright", "Copyright (C) 2006-2021 VALINET Solutions SRL. All rights reserved." |
||||
VALUE "OriginalFilename", "Explorer.exe" |
||||
VALUE "ProductName", "Explorer Patcher" |
||||
VALUE "ProductVersion", "22000.1.0.0" |
||||
END |
||||
END |
||||
BLOCK "VarFileInfo" |
||||
BEGIN |
||||
VALUE "Translation", 0x409, 1200 |
||||
END |
||||
END |
||||
|
||||
#endif // English (United States) resources |
||||
///////////////////////////////////////////////////////////////////////////// |
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED |
||||
///////////////////////////////////////////////////////////////////////////// |
||||
// |
||||
// Generated from the TEXTINCLUDE 3 resource. |
||||
// |
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////// |
||||
#endif // not APSTUDIO_INVOKED |
||||
|
||||
@ -1,2 +1,10 @@
@@ -1,2 +1,10 @@
|
||||
# Explorer Patcher |
||||
ExplorerPatcher allows using the old taskbar in Windows 11 without the side effects of UndockingDisabled. |
||||
Explorer Patcher is a patcher that enables various stuff in Explorer. For the moment, it includes the following: |
||||
|
||||
* allows using the old taskbar in Windows 11 without the side effects of UndockingDisabled and with fully working search, modern apps showing properly, screen snip still working etc |
||||
|
||||
A detailed description of how this works is available on my web site [here](https://valinet.ro/2021/08/09/Restore-Windows-11-to-working-Windows-10-UI.html). |
||||
|
||||
Precompiled binaries are available in [Releases](https://github.com/valinet/ExplorerPatcher/releases). |
||||
|
||||
To install, save the executable in a safe directory, run it once as an administrator to have it register as [Taskman](https://www.geoffchappell.com/notes/windows/shell/explorer/taskman.htm) for Explorer and just restart Explorer or reboot. |
||||
|
||||
Loading…
Reference in new issue