1
0
mirror of https://github.com/valinet/ExplorerPatcher.git synced 2024-11-27 17:00:59 +01:00

Start: Functional Windows 10 Start menu

This commit is contained in:
Valentin Radu 2022-02-25 00:19:25 +02:00
parent 43adf91203
commit fbd6ab591f
14 changed files with 1118 additions and 19 deletions

View File

@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
VisualStudioVersion = 17.0.32126.317
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ExplorerPatcher", "ExplorerPatcher\ExplorerPatcher.vcxproj", "{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}"
ProjectSection(ProjectDependencies) = postProject
@ -18,6 +18,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ep_setup", "ep_setup\ep_set
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9} = {DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}
{1ECCAB38-61B6-4C85-BBB5-2E2232DA3A87} = {1ECCAB38-61B6-4C85-BBB5-2E2232DA3A87}
{314A50C1-F0A0-4D0C-89E1-AD8F3951043E} = {314A50C1-F0A0-4D0C-89E1-AD8F3951043E}
{6BF03EEA-200A-4698-9555-057DD52B0C78} = {6BF03EEA-200A-4698-9555-057DD52B0C78}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ep_setup_patch", "ep_setup_patch\ep_setup_patch.vcxproj", "{0C13E5F3-106B-4836-A7C2-8E5808A6ED78}"
@ -34,6 +35,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ep_weather_host", "ep_weath
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ep_weather_host_stub", "ep_weather_host_stub\ep_weather_host_stub.vcxproj", "{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ep_startmenu", "ep_startmenu\ep_startmenu.vcxproj", "{6BF03EEA-200A-4698-9555-057DD52B0C78}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|amd64 = Debug|amd64
@ -92,6 +95,12 @@ Global
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Release|amd64.ActiveCfg = Release|x64
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Release|amd64.Build.0 = Release|x64
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Release|IA-32.ActiveCfg = Release|Win32
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Debug|amd64.ActiveCfg = Debug|x64
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Debug|amd64.Build.0 = Debug|x64
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Debug|IA-32.ActiveCfg = Debug|Win32
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Release|amd64.ActiveCfg = Release|x64
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Release|amd64.Build.0 = Release|x64
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Release|IA-32.ActiveCfg = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -8863,6 +8863,7 @@ char VisibilityChangedEventArguments_GetVisible(__int64 a1)
return v3[0];
}
DWORD StartMenu_ShowClassicMode = 0;
DWORD StartMenu_maximumFreqApps = 6;
DWORD StartMenu_ShowAllApps = 0;
@ -8933,6 +8934,41 @@ void StartMenu_LoadSettings(BOOL bRestartIfChanged)
StartMenu_maximumFreqApps = dwVal;
RegCloseKey(hKey);
}
RegCreateKeyExW(
HKEY_CURRENT_USER,
L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_READ,
NULL,
&hKey,
NULL
);
if (hKey == NULL || hKey == INVALID_HANDLE_VALUE)
{
hKey = NULL;
}
if (hKey)
{
dwSize = sizeof(DWORD);
dwVal = 0;
RegQueryValueExW(
hKey,
TEXT("Start_ShowClassicMode"),
0,
NULL,
&dwVal,
&dwSize
);
if (bRestartIfChanged && dwVal != StartMenu_ShowClassicMode)
{
exit(0);
}
StartMenu_ShowClassicMode = dwVal;
RegCloseKey(hKey);
}
}
static INT64(*StartDocked_LauncherFrame_OnVisibilityChangedFunc)(void*, INT64, void*) = NULL;
@ -8966,6 +9002,13 @@ INT64 StartDocked_SystemListPolicyProvider_GetMaximumFrequentAppsHook(void* _thi
return StartMenu_maximumFreqApps;
}
INT64(*StartUI_SystemListPolicyProvider_GetMaximumFrequentAppsFunc)(void*) = NULL;
INT64 StartUI_SystemListPolicyProvider_GetMaximumFrequentAppsHook(void* _this)
{
return StartMenu_maximumFreqApps;
}
INT64(*StartDocked_StartSizingFrame_StartSizingFrameFunc)(void* _this) = NULL;
INT64 StartDocked_StartSizingFrame_StartSizingFrameHook(void* _this)
@ -8993,6 +9036,110 @@ INT64 StartDocked_StartSizingFrame_StartSizingFrameHook(void* _this)
return rv;
}
HANDLE start_CreateFileW(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
{
WCHAR path[MAX_PATH];
GetWindowsDirectoryW(path, MAX_PATH);
wcscat_s(path, MAX_PATH, L"\\SystemResources\\Windows.UI.ShellCommon\\Windows.UI.ShellCommon.pri");
if (!_wcsicmp(path, lpFileName))
{
GetWindowsDirectoryW(path, MAX_PATH);
wcscat_s(path, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\Windows.UI.ShellCommon.pri");
return CreateFileW(path, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile);
}
GetWindowsDirectoryW(path, MAX_PATH);
wcscat_s(path, MAX_PATH, L"\\SystemResources\\Windows.UI.ShellCommon\\pris");
int len = wcslen(path);
if (!_wcsnicmp(path, lpFileName, len))
{
GetWindowsDirectoryW(path, MAX_PATH);
wcscat_s(path, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\pris2");
wcscat_s(path, MAX_PATH, lpFileName + len);
return CreateFileW(path, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile);
}
return CreateFileW(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile);
}
BOOL start_GetFileAttributesExW(LPCWSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation)
{
WCHAR path[MAX_PATH];
GetWindowsDirectoryW(path, MAX_PATH);
wcscat_s(path, MAX_PATH, L"\\SystemResources\\Windows.UI.ShellCommon\\Windows.UI.ShellCommon.pri");
if (!_wcsicmp(path, lpFileName))
{
GetWindowsDirectoryW(path, MAX_PATH);
wcscat_s(path, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\Windows.UI.ShellCommon.pri");
return GetFileAttributesExW(path, fInfoLevelId, lpFileInformation);
}
GetWindowsDirectoryW(path, MAX_PATH);
wcscat_s(path, MAX_PATH, L"\\SystemResources\\Windows.UI.ShellCommon\\pris");
int len = wcslen(path);
if (!_wcsnicmp(path, lpFileName, len))
{
GetWindowsDirectoryW(path, MAX_PATH);
wcscat_s(path, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\pris2");
wcscat_s(path, MAX_PATH, lpFileName + len);
return GetFileAttributesExW(path, fInfoLevelId, lpFileInformation);
}
return GetFileAttributesExW(lpFileName, fInfoLevelId, lpFileInformation);
}
HANDLE start_FindFirstFileW(LPCWSTR lpFileName, LPWIN32_FIND_DATAW lpFindFileData)
{
WCHAR path[MAX_PATH];
GetWindowsDirectoryW(path, MAX_PATH);
wcscat_s(path, MAX_PATH, L"\\SystemResources\\Windows.UI.ShellCommon\\Windows.UI.ShellCommon.pri");
if (!_wcsicmp(path, lpFileName))
{
GetWindowsDirectoryW(path, MAX_PATH);
wcscat_s(path, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\Windows.UI.ShellCommon.pri");
return FindFirstFileW(path, lpFindFileData);
}
GetWindowsDirectoryW(path, MAX_PATH);
wcscat_s(path, MAX_PATH, L"\\SystemResources\\Windows.UI.ShellCommon\\pris");
int len = wcslen(path);
if (!_wcsnicmp(path, lpFileName, len))
{
GetWindowsDirectoryW(path, MAX_PATH);
wcscat_s(path, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\pris2");
wcscat_s(path, MAX_PATH, lpFileName + len);
return FindFirstFileW(path, lpFindFileData);
}
return FindFirstFileW(lpFileName, lpFindFileData);
}
LSTATUS start_RegGetValueW(HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
{
if (hkey == HKEY_LOCAL_MACHINE && !_wcsicmp(lpSubKey, L"Software\\Microsoft\\Windows\\CurrentVersion\\Mrt\\_Merged") && !_wcsicmp(lpValue, L"ShouldMergeInProc"))
{
*(DWORD*)pvData = 1;
return ERROR_SUCCESS;
}
return RegGetValueW(hkey, lpSubKey, lpValue, dwFlags, pdwType, pvData, pcbData);
}
int start_SetWindowRgn(HWND hWnd, HRGN hRgn, BOOL bRedraw)
{
DWORD dwThisPID = GetCurrentProcessId(), dwForeignPID = 0;
GetWindowThreadProcessId(GetForegroundWindow(), &dwForeignPID);
ShowWindow(hWnd, (!hRgn && dwThisPID != dwForeignPID) ? SW_HIDE : SW_SHOW);
return SetWindowRgn(hWnd, hRgn, bRedraw);
}
HMODULE start_LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
{
WCHAR path[MAX_PATH];
GetSystemDirectoryW(path, MAX_PATH);
wcscat_s(path, MAX_PATH, L"\\StartTileData.dll");
if (!_wcsicmp(path, lpLibFileName))
{
GetWindowsDirectoryW(path, MAX_PATH);
wcscat_s(path, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\StartTileDataLegacy.dll");
return LoadLibraryExW(path, hFile, dwFlags);
}
return LoadLibraryExW(lpLibFileName, hFile, dwFlags);
}
int WINAPI SetupMessage(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType)
{
return 0;
@ -9407,9 +9554,33 @@ void InjectStartMenu()
#ifdef _WIN64
funchook = funchook_create();
LoadLibraryW(L"StartDocked.dll");
HANDLE hStartDocked = GetModuleHandleW(L"StartDocked.dll");
LoadLibraryW(L"StartUI.dll");
HANDLE hStartUI = GetModuleHandleW(L"StartUI.dll");
StartMenu_LoadSettings(FALSE);
Setting* settings = calloc(3, sizeof(Setting));
if (StartMenu_ShowClassicMode)
{
// Fixes hang when Start menu closes
VnPatchDelayIAT(hStartUI, "ext-ms-win-ntuser-draw-l1-1-0.dll", "SetWindowRgn", start_SetWindowRgn);
// Redirects to StartTileData from 22000.51 which works with the legacy menu
LoadLibraryW(L"combase.dll");
HANDLE hCombase = GetModuleHandleW(L"combase.dll");
VnPatchIAT(hCombase, "api-ms-win-core-libraryloader-l1-2-0.dll", "LoadLibraryExW", start_LoadLibraryExW);
// Redirects to pri files from 22000.51 which work with the legacy menu
LoadLibraryW(L"MrmCoreR.dll");
HANDLE hMrmCoreR = GetModuleHandleW(L"MrmCoreR.dll");
VnPatchIAT(hMrmCoreR, "api-ms-win-core-file-l1-1-0.dll", "CreateFileW", start_CreateFileW);
VnPatchIAT(hMrmCoreR, "api-ms-win-core-file-l1-1-0.dll", "GetFileAttributesExW", start_GetFileAttributesExW);
VnPatchIAT(hMrmCoreR, "api-ms-win-core-file-l1-1-0.dll", "FindFirstFileW", start_FindFirstFileW);
VnPatchIAT(hMrmCoreR, "api-ms-win-core-registry-l1-1-0.dll", "RegGetValueW", start_RegGetValueW);
}
Setting* settings = calloc(4, sizeof(Setting));
settings[0].callback = NULL;
settings[0].data = NULL;
settings[0].hEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
@ -9428,10 +9599,16 @@ void InjectStartMenu()
settings[2].hKey = NULL;
wcscpy_s(settings[2].name, MAX_PATH, TEXT(REGPATH_STARTMENU));
settings[2].origin = HKEY_CURRENT_USER;
settings[3].callback = StartMenu_LoadSettings;
settings[3].data = TRUE;
settings[3].hEvent = NULL;
settings[3].hKey = NULL;
wcscpy_s(settings[3].name, MAX_PATH, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced");
settings[3].origin = HKEY_CURRENT_USER;
SettingsChangeParameters* params = calloc(1, sizeof(SettingsChangeParameters));
params->settings = settings;
params->size = 3;
params->size = 4;
CreateThread(
0,
0,
@ -9442,8 +9619,7 @@ void InjectStartMenu()
);
int rv;
DWORD dwVal0 = 0x62254, dwVal1 = 0x188EBC, dwVal2 = 0x187120, dwVal3 = 0x3C10, dwVal4 = 0x160AEC;
DWORD dwVal0 = 0x62254, dwVal1 = 0x188EBC, dwVal2 = 0x187120, dwVal3 = 0x3C10, dwVal4 = 0;
HMODULE hModule = LoadLibraryW(L"Shlwapi.dll");
if (hModule)
@ -9453,7 +9629,6 @@ void InjectStartMenu()
if (SHRegGetValueFromHKCUHKLMFunc)
{
dwSize = sizeof(DWORD);
SHRegGetValueFromHKCUHKLMFunc(
TEXT(REGPATH_STARTMENU) TEXT("\\") TEXT(STARTDOCKED_SB_NAME),
@ -9488,20 +9663,17 @@ void InjectStartMenu()
(LPDWORD)(&dwSize)
);
SHRegGetValueFromHKCUHKLMFunc(
TEXT(REGPATH_STARTMENU) TEXT("\\") TEXT(STARTDOCKED_SB_NAME),
TEXT(STARTDOCKED_SB_4),
TEXT(REGPATH_STARTMENU) TEXT("\\") TEXT(STARTUI_SB_NAME),
TEXT(STARTUI_SB_0),
SRRF_RT_REG_DWORD,
NULL,
&dwVal4,
(LPDWORD)(&dwSize)
);
}
FreeLibrary(hModule);
}
LoadLibraryW(L"StartDocked.dll");
HANDLE hStartDocked = GetModuleHandle(L"StartDocked.dll");
if (dwVal1 && dwVal1 != 0xFFFFFFFF)
{
StartDocked_LauncherFrame_ShowAllAppsFunc = (INT64(*)(void*))
@ -9539,18 +9711,18 @@ void InjectStartMenu()
}
if (dwVal4 && dwVal4 != 0xFFFFFFFF)
{
/*StartDocked_StartSizingFrame_StartSizingFrameFunc = (INT64(*)(void*, INT64, void*))
((uintptr_t)hStartDocked + dwVal4);
StartUI_SystemListPolicyProvider_GetMaximumFrequentAppsFunc = (INT64(*)(void*, INT64, void*))
((uintptr_t)hStartUI + dwVal4);
rv = funchook_prepare(
funchook,
(void**)&StartDocked_StartSizingFrame_StartSizingFrameFunc,
StartDocked_StartSizingFrame_StartSizingFrameHook
(void**)&StartUI_SystemListPolicyProvider_GetMaximumFrequentAppsFunc,
StartUI_SystemListPolicyProvider_GetMaximumFrequentAppsHook
);
if (rv != 0)
{
FreeLibraryAndExitThread(hModule, rv);
return rv;
}*/
}
}
rv = funchook_install(funchook, 0);

View File

@ -18,6 +18,9 @@ const char* startdocked_SN[STARTDOCKED_SB_CNT] = {
STARTDOCKED_SB_3,
STARTDOCKED_SB_4
};
const char* startui_SN[STARTUI_SB_CNT] = {
STARTUI_SB_0
};
const wchar_t DownloadSymbolsXML[] =
L"<toast scenario=\"reminder\" "
@ -527,6 +530,112 @@ DWORD DownloadSymbols(DownloadSymbolsParams* params)
if (IsWindows11())
{
ZeroMemory(hash, sizeof(WCHAR) * 100);
ZeroMemory(wszPath, sizeof(WCHAR) * 100);
char startui_sb_dll[MAX_PATH];
ZeroMemory(
startui_sb_dll,
(MAX_PATH) * sizeof(char)
);
GetWindowsDirectoryA(
startui_sb_dll,
MAX_PATH
);
strcat_s(
startui_sb_dll,
MAX_PATH,
"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\"
);
strcat_s(
startui_sb_dll,
MAX_PATH,
STARTUI_SB_NAME
);
strcat_s(
startui_sb_dll,
MAX_PATH,
".dll"
);
GetWindowsDirectoryW(wszPath, MAX_PATH);
wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\" _T(STARTUI_SB_NAME) L".dll");
ComputeFileHash(wszPath, hash, 100);
printf("[Symbols] Downloading symbols for \"%s\" (\"%s\")...\n", startui_sb_dll, hash);
if (VnDownloadSymbols(
NULL,
startui_sb_dll,
szSettingsPath,
MAX_PATH
))
{
printf("[Symbols] Symbols for \"%s\" are not available - unable to download.\n", startui_sb_dll);
printf("[Symbols] Please refer to \"https://github.com/valinet/ExplorerPatcher/wiki/Symbols\" for more information.\n");
if (params->bVerbose)
{
FreeLibraryAndExitThread(
hModule,
6
);
}
return 6;
}
printf("[Symbols] Reading symbols...\n");
if (VnGetSymbols(
szSettingsPath,
symbols_PTRS.startui_PTRS,
startui_SN,
STARTUI_SB_CNT
))
{
printf("[Symbols] Failure in reading symbols for \"%s\".\n", startui_sb_dll);
if (params->bVerbose)
{
FreeLibraryAndExitThread(
hModule,
7
);
}
return 7;
}
RegCreateKeyExW(
HKEY_CURRENT_USER,
TEXT(REGPATH_STARTMENU) L"\\" TEXT(STARTUI_SB_NAME),
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_WRITE,
NULL,
&hKey,
&dwDisposition
);
if (!hKey || hKey == INVALID_HANDLE_VALUE)
{
if (params->bVerbose)
{
FreeLibraryAndExitThread(
hModule,
8
);
}
return 8;
}
RegSetValueExW(
hKey,
TEXT(STARTUI_SB_0),
0,
REG_DWORD,
&(symbols_PTRS.startui_PTRS[0]),
sizeof(DWORD)
);
if (hKey) RegCloseKey(hKey);
}
RegCreateKeyExW(
HKEY_CURRENT_USER,
@ -796,7 +905,43 @@ BOOL LoadSymbols(symbols_addr* symbols_PTRS, HMODULE hModule)
RegCloseKey(hKey);
}
}
bIsStartHardcoded = FALSE;
GetWindowsDirectoryW(wszPath, MAX_PATH);
wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\" TEXT(STARTUI_SB_NAME) L".dll");
ComputeFileHash(wszPath, hash, 100);
if (!_stricmp(hash, "2768cc6cc7f686b2aa084cb5c8cce65d")) // 493
{
symbols_PTRS->startui_PTRS[0] = 0x37180;
bIsStartHardcoded = TRUE;
}
if (bIsStartHardcoded)
{
printf("[Symbols] Identified known \"" STARTUI_SB_NAME ".dll\" with hash %s.\n", hash);
RegCreateKeyExW(
HKEY_CURRENT_USER,
TEXT(REGPATH_STARTMENU) L"\\" TEXT(STARTUI_SB_NAME),
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_WRITE,
NULL,
&hKey,
&dwDisposition
);
if (hKey)
{
RegSetValueExW(
hKey,
TEXT(STARTUI_SB_0),
0,
REG_DWORD,
&(symbols_PTRS->startui_PTRS[0]),
sizeof(DWORD)
);
RegCloseKey(hKey);
}
}
if (!bIsTwinuiPcshellHardcoded || !bIsStartHardcoded)
{
RegCreateKeyExW(
@ -939,6 +1084,30 @@ BOOL LoadSymbols(symbols_addr* symbols_PTRS, HMODULE hModule)
);
if (hKey) RegCloseKey(hKey);
}
if (IsWindows11())
{
RegCreateKeyExW(
HKEY_CURRENT_USER,
TEXT(REGPATH_STARTMENU) L"\\" TEXT(STARTUI_SB_NAME),
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_READ,
NULL,
&hKey,
&dwDisposition
);
RegQueryValueExW(
hKey,
TEXT(STARTUI_SB_0),
0,
NULL,
&(symbols_PTRS->startui_PTRS[0]),
&dwSize
);
if (hKey) RegCloseKey(hKey);
}
}
BOOL bNeedToDownload = FALSE;

View File

@ -27,11 +27,15 @@
#define STARTDOCKED_SB_3 "StartDocked::SystemListPolicyProvider::GetMaximumFrequentApps"
#define STARTDOCKED_SB_4 "StartDocked::StartSizingFrame::StartSizingFrame"
#define STARTDOCKED_SB_CNT 5
#define STARTUI_SB_NAME "StartUI"
#define STARTUI_SB_0 "StartUI::SystemListPolicyProvider::GetMaximumFrequentApps"
#define STARTUI_SB_CNT 1
#pragma pack(push, 1)
typedef struct symbols_addr
{
DWORD twinui_pcshell_PTRS[TWINUI_PCSHELL_SB_CNT];
DWORD startdocked_PTRS[STARTDOCKED_SB_CNT];
DWORD startui_PTRS[STARTUI_SB_CNT];
} symbols_addr;
#pragma pack(pop)

View File

@ -1288,7 +1288,7 @@ BOOL DownloadAndInstallWebView2Runtime()
BOOL bOK = FALSE;
HINTERNET hInternet = NULL;
if (hInternet = InternetOpenA(
L"ExplorerPatcher",
"ExplorerPatcher",
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,
NULL,
@ -1369,3 +1369,97 @@ BOOL DownloadAndInstallWebView2Runtime()
}
return bOK;
}
BOOL DownloadFile(LPCWSTR wszURL, DWORD dwSize, LPCWSTR wszPath)
{
BOOL bOK = FALSE;
HINTERNET hInternet = NULL;
if (hInternet = InternetOpenW(
L"ExplorerPatcher",
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,
NULL,
0
))
{
HINTERNET hConnect = InternetOpenUrlW(
hInternet,
wszURL,
NULL,
0,
INTERNET_FLAG_RAW_DATA |
INTERNET_FLAG_RELOAD |
INTERNET_FLAG_RESYNCHRONIZE |
INTERNET_FLAG_NO_COOKIES |
INTERNET_FLAG_NO_UI |
INTERNET_FLAG_NO_CACHE_WRITE |
INTERNET_FLAG_DONT_CACHE,
NULL
);
if (hConnect)
{
char* exe_buffer = NULL;
DWORD dwRead = dwSize;
exe_buffer = calloc(dwSize, sizeof(char));
if (exe_buffer)
{
BOOL bRet = FALSE;
if (bRet = InternetReadFile(
hConnect,
exe_buffer,
dwSize - 1,
&dwRead
))
{
FILE* f = NULL;
_wfopen_s(&f, wszPath, L"wb");
if (f)
{
fwrite(exe_buffer, 1, dwRead, f);
fclose(f);
}
}
free(exe_buffer);
}
InternetCloseHandle(hConnect);
}
InternetCloseHandle(hInternet);
}
return bOK;
}
BOOL IsConnectedToInternet()
{
BOOL connectedStatus = FALSE;
HRESULT hr = S_FALSE;
hr = CoInitialize(NULL);
if (SUCCEEDED(hr))
{
INetworkListManager* pNetworkListManager;
hr = CoCreateInstance(&CLSID_NetworkListManager, NULL, CLSCTX_ALL, &IID_NetworkListManager, (LPVOID*)&pNetworkListManager);
if (SUCCEEDED(hr))
{
NLM_CONNECTIVITY nlmConnectivity = NLM_CONNECTIVITY_DISCONNECTED;
VARIANT_BOOL isConnected = VARIANT_FALSE;
hr = pNetworkListManager->lpVtbl->get_IsConnectedToInternet(pNetworkListManager, &isConnected);
if (SUCCEEDED(hr))
{
if (isConnected == VARIANT_TRUE)
connectedStatus = TRUE;
else
connectedStatus = FALSE;
}
if (isConnected == VARIANT_FALSE && SUCCEEDED(pNetworkListManager->lpVtbl->GetConnectivity(pNetworkListManager, &nlmConnectivity)))
{
if (nlmConnectivity & (NLM_CONNECTIVITY_IPV4_LOCALNETWORK | NLM_CONNECTIVITY_IPV4_SUBNET | NLM_CONNECTIVITY_IPV6_LOCALNETWORK | NLM_CONNECTIVITY_IPV6_SUBNET))
{
connectedStatus = 2;
}
}
pNetworkListManager->lpVtbl->Release(pNetworkListManager);
}
CoUninitialize();
}
return connectedStatus;
}

View File

@ -19,6 +19,7 @@
#include "queryversion.h"
#pragma comment(lib, "Psapi.lib")
#include <activscp.h>
#include <netlistmgr.h>
#include <valinet/utility/osversion.h>
#include "def.h"
@ -60,6 +61,12 @@ DEFINE_GUID(CLSID_VBScript,
0x00, 0xAA, 0x00, 0x4A, 0x55, 0xE8
);
DEFINE_GUID(CLSID_NetworkListManager,
0xDCB00C01, 0x570F, 0x4A9B, 0x8D, 0x69, 0x19, 0x9F, 0xDB, 0xA5, 0x72, 0x3B);
DEFINE_GUID(IID_NetworkListManager,
0xDCB00000, 0x570F, 0x4A9B, 0x8D, 0x69, 0x19, 0x9F, 0xDB, 0xA5, 0x72, 0x3B);
typedef struct _StuckRectsData
{
int pvData[6];
@ -575,4 +582,8 @@ inline BOOL IsWindows11()
}
BOOL DownloadAndInstallWebView2Runtime();
BOOL DownloadFile(LPCWSTR wszURL, DWORD dwSize, LPCWSTR wszPath);
BOOL IsConnectedToInternet();
#endif

View File

@ -8,6 +8,38 @@ processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#include "resource.h"
#include "../ExplorerPatcher/utility.h"
BOOL ShouldDownloadOrDelete(BOOL bInstall, HINSTANCE hInstance, LPCWSTR wszPath, LPCSTR chash)
{
if (FileExistsW(wszPath))
{
WCHAR hash[100];
ZeroMemory(hash, sizeof(WCHAR) * 100);
ComputeFileHash(wszPath, hash, 100);
if (_stricmp(hash, chash))
{
if (bInstall)
{
return TRUE;
}
}
else
{
if (!bInstall)
{
return InstallResource(FALSE, hInstance, 0, wszPath); // Delete
}
}
}
else
{
if (bInstall)
{
return TRUE;
}
}
return FALSE;
}
BOOL SetupShortcut(BOOL bInstall, WCHAR* wszPath, WCHAR* wszArguments)
{
WCHAR wszTitle[MAX_PATH];
@ -815,6 +847,74 @@ int WINAPI wWinMain(
bOk = GetWindowsDirectoryW(wszPath, MAX_PATH);
}
if (bOk && IsWindows11())
{
wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\wincorlib.dll");
bOk = InstallResource(bInstall, hInstance, IDR_EP_STARTMENU, wszPath);
}
if (bOk)
{
bOk = GetWindowsDirectoryW(wszPath, MAX_PATH);
}
if (bOk && IsWindows11())
{
wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\wincorlib_orig.dll");
bOk = InstallResource(FALSE, hInstance, 0, wszPath); // Delete
}
if (bOk && IsWindows11())
{
if (bInstall)
{
WCHAR wszOrigPath[MAX_PATH];
GetSystemDirectoryW(wszOrigPath, MAX_PATH);
wcscat_s(wszOrigPath, MAX_PATH, L"\\wincorlib.dll");
bOk = CreateSymbolicLinkW(wszPath, wszOrigPath, 0);
}
}
if (bOk && IsWindows11())
{
GetWindowsDirectoryW(wszPath, MAX_PATH);
wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\StartTileDataLegacy.dll");
if (ShouldDownloadOrDelete(bInstall, hInstance, wszPath, "aa36a082e3b33297b6930eea6e98f8cf") && IsConnectedToInternet() == TRUE)
{
DownloadFile(L"https://github.com/valinet/ExplorerPatcher/files/8136435/StartTileDataLegacy.pri.txt", 10 * 1024 * 1024, wszPath);
}
}
if (bOk && IsWindows11())
{
GetWindowsDirectoryW(wszPath, MAX_PATH);
wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\Windows.UI.ShellCommon.pri");
if (ShouldDownloadOrDelete(bInstall, hInstance, wszPath, "95b41e1a2661501036198d8225aaa605") && IsConnectedToInternet() == TRUE)
{
DownloadFile(L"https://github.com/valinet/ExplorerPatcher/files/8136442/Windows.UI.ShellCommon.pri.txt", 10 * 1024 * 1024, wszPath);
}
}
if (bOk && IsWindows11())
{
GetWindowsDirectoryW(wszPath, MAX_PATH);
wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\en-US");
CreateDirectoryW(wszPath, NULL);
wcscat_s(wszPath, MAX_PATH, L"\\StartTileDataLegacy.dll.mui");
if (ShouldDownloadOrDelete(bInstall, hInstance, wszPath, "0ed61f384c39116f424eb2fa6b3b9ef8") && IsConnectedToInternet() == TRUE)
{
DownloadFile(L"https://github.com/valinet/ExplorerPatcher/files/8136433/StartTileDataLegacy.dll.mui.txt", 10 * 1024 * 1024, wszPath);
}
}
if (bOk && IsWindows11())
{
GetWindowsDirectoryW(wszPath, MAX_PATH);
wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\pris2");
CreateDirectoryW(wszPath, NULL);
wcscat_s(wszPath, MAX_PATH, L"\\Windows.UI.ShellCommon.en-US.pri");
if (ShouldDownloadOrDelete(bInstall, hInstance, wszPath, "12d7b85cd1b995698b23e5d41fab60ec") && IsConnectedToInternet() == TRUE)
{
DownloadFile(L"https://github.com/valinet/ExplorerPatcher/files/8136451/Windows.UI.ShellCommon.en-US.pri.txt", 10 * 1024 * 1024, wszPath);
}
}
if (bOk)
{
bOk = GetWindowsDirectoryW(wszPath, MAX_PATH);
}
if (bOk && IsWindows11())
{
wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\ShellExperienceHost_cw5n1h2txyewy\\dxgi.dll");
bOk = InstallResource(bInstall, hInstance, IDR_EP_AMD64, wszPath);

View File

@ -102,6 +102,8 @@ IDR_EP_WEATHER_STUB RCDATA "..\\build\\Release\\ep_weather_host_
IDR_MS_WEBVIEW2_LOADER RCDATA "..\\build\\Release\\WebView2Loader.dll"
IDR_EP_STARTMENU RCDATA "..\\build\\Release\\ep_startmenu.dll"
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////

View File

@ -100,7 +100,9 @@ IDR_EP_WEATHER RCDATA "..\\build\\Debug\\ep_weather_host.dl
IDR_EP_WEATHER_STUB RCDATA "..\\build\\Debug\\ep_weather_host_stub.dll"
IDR_MS_WEBVIEW2_LOADER RCDATA "..\\build\\Release\\WebView2Loader.dll"
IDR_MS_WEBVIEW2_LOADER RCDATA "..\\build\\Debug\\WebView2Loader.dll"
IDR_EP_STARTMENU RCDATA "..\\build\\Debug\\ep_startmenu.dll"
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////

View File

@ -8,6 +8,8 @@
#define IDR_EP_WEATHER 106
#define IDR_EP_WEATHER_STUB 107
#define IDR_MS_WEBVIEW2_LOADER 201
#define IDR_EP_STARTMENU 108
// Next default values for new objects
//

View File

@ -0,0 +1,260 @@
#ifndef _H_EP_SM_FORWARDS
#define _H_EP_SM_FORWARDS
#pragma comment(linker, "/export:?<Dispose>@Exception@Platform@@UE$AAAXXZ=wincorlib_orig.dll.?<Dispose>@Exception@Platform@@UE$AAAXXZ,@1")
#pragma comment(linker, "/export:?<Dispose>@String@Platform@@UE$AAAXXZ=wincorlib_orig.dll.?<Dispose>@String@Platform@@UE$AAAXXZ,@2")
#pragma comment(linker, "/export:?<Dispose>@Type@Platform@@UE$AAAXXZ=wincorlib_orig.dll.?<Dispose>@Type@Platform@@UE$AAAXXZ,@3")
#pragma comment(linker, "/export:??0AccessDeniedException@Platform@@QE$AAA@PE$AAVString@1@@Z=wincorlib_orig.dll.??0AccessDeniedException@Platform@@QE$AAA@PE$AAVString@1@@Z,@4")
#pragma comment(linker, "/export:??0AccessDeniedException@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0AccessDeniedException@Platform@@QE$AAA@XZ,@5")
#pragma comment(linker, "/export:??0Attribute@Metadata@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0Attribute@Metadata@Platform@@QE$AAA@XZ,@6")
#pragma comment(linker, "/export:??0Boolean@Platform@@QEAA@_N@Z=wincorlib_orig.dll.??0Boolean@Platform@@QEAA@_N@Z,@7")
#pragma comment(linker, "/export:??0COMException@Platform@@QE$AAA@H@Z=wincorlib_orig.dll.??0COMException@Platform@@QE$AAA@H@Z,@8")
#pragma comment(linker, "/export:??0COMException@Platform@@QE$AAA@HPE$AAVString@1@@Z=wincorlib_orig.dll.??0COMException@Platform@@QE$AAA@HPE$AAVString@1@@Z,@9")
#pragma comment(linker, "/export:??0ChangedStateException@Platform@@QE$AAA@PE$AAVString@1@@Z=wincorlib_orig.dll.??0ChangedStateException@Platform@@QE$AAA@PE$AAVString@1@@Z,@10")
#pragma comment(linker, "/export:??0ChangedStateException@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0ChangedStateException@Platform@@QE$AAA@XZ,@11")
#pragma comment(linker, "/export:??0ClassNotRegisteredException@Platform@@QE$AAA@PE$AAVString@1@@Z=wincorlib_orig.dll.??0ClassNotRegisteredException@Platform@@QE$AAA@PE$AAVString@1@@Z,@12")
#pragma comment(linker, "/export:??0ClassNotRegisteredException@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0ClassNotRegisteredException@Platform@@QE$AAA@XZ,@13")
#pragma comment(linker, "/export:??0Delegate@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0Delegate@Platform@@QE$AAA@XZ,@14")
#pragma comment(linker, "/export:??0DisconnectedException@Platform@@QE$AAA@PE$AAVString@1@@Z=wincorlib_orig.dll.??0DisconnectedException@Platform@@QE$AAA@PE$AAVString@1@@Z,@15")
#pragma comment(linker, "/export:??0DisconnectedException@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0DisconnectedException@Platform@@QE$AAA@XZ,@16")
#pragma comment(linker, "/export:??0Enum@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0Enum@Platform@@QE$AAA@XZ,@17")
#pragma comment(linker, "/export:??0Exception@Platform@@QE$AAA@H@Z=wincorlib_orig.dll.??0Exception@Platform@@QE$AAA@H@Z,@18")
#pragma comment(linker, "/export:??0Exception@Platform@@QE$AAA@HPE$AAVString@1@@Z=wincorlib_orig.dll.??0Exception@Platform@@QE$AAA@HPE$AAVString@1@@Z,@19")
#pragma comment(linker, "/export:??0FailureException@Platform@@QE$AAA@PE$AAVString@1@@Z=wincorlib_orig.dll.??0FailureException@Platform@@QE$AAA@PE$AAVString@1@@Z,@20")
#pragma comment(linker, "/export:??0FailureException@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0FailureException@Platform@@QE$AAA@XZ,@21")
#pragma comment(linker, "/export:??0GridLength@Xaml@UI@Windows@@QEAA@NW4GridUnitType@123@@Z=wincorlib_orig.dll.??0GridLength@Xaml@UI@Windows@@QEAA@NW4GridUnitType@123@@Z,@22")
#pragma comment(linker, "/export:??0IntPtr@Platform@@QEAA@H@Z=wincorlib_orig.dll.??0IntPtr@Platform@@QEAA@H@Z,@23")
#pragma comment(linker, "/export:??0IntPtr@Platform@@QEAA@PEAX@Z=wincorlib_orig.dll.??0IntPtr@Platform@@QEAA@PEAX@Z,@24")
#pragma comment(linker, "/export:??0InvalidArgumentException@Platform@@QE$AAA@PE$AAVString@1@@Z=wincorlib_orig.dll.??0InvalidArgumentException@Platform@@QE$AAA@PE$AAVString@1@@Z,@25")
#pragma comment(linker, "/export:??0InvalidArgumentException@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0InvalidArgumentException@Platform@@QE$AAA@XZ,@26")
#pragma comment(linker, "/export:??0InvalidCastException@Platform@@QE$AAA@PE$AAVString@1@@Z=wincorlib_orig.dll.??0InvalidCastException@Platform@@QE$AAA@PE$AAVString@1@@Z,@27")
#pragma comment(linker, "/export:??0InvalidCastException@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0InvalidCastException@Platform@@QE$AAA@XZ,@28")
#pragma comment(linker, "/export:??0MTAThreadAttribute@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0MTAThreadAttribute@Platform@@QE$AAA@XZ,@29")
#pragma comment(linker, "/export:??0NotImplementedException@Platform@@QE$AAA@PE$AAVString@1@@Z=wincorlib_orig.dll.??0NotImplementedException@Platform@@QE$AAA@PE$AAVString@1@@Z,@30")
#pragma comment(linker, "/export:??0NotImplementedException@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0NotImplementedException@Platform@@QE$AAA@XZ,@31")
#pragma comment(linker, "/export:??0NullReferenceException@Platform@@QE$AAA@PE$AAVString@1@@Z=wincorlib_orig.dll.??0NullReferenceException@Platform@@QE$AAA@PE$AAVString@1@@Z,@32")
#pragma comment(linker, "/export:??0NullReferenceException@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0NullReferenceException@Platform@@QE$AAA@XZ,@33")
#pragma comment(linker, "/export:??0Object@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0Object@Platform@@QE$AAA@XZ,@34")
#pragma comment(linker, "/export:??0ObjectDisposedException@Platform@@QE$AAA@PE$AAVString@1@@Z=wincorlib_orig.dll.??0ObjectDisposedException@Platform@@QE$AAA@PE$AAVString@1@@Z,@35")
#pragma comment(linker, "/export:??0ObjectDisposedException@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0ObjectDisposedException@Platform@@QE$AAA@XZ,@36")
#pragma comment(linker, "/export:??0OnePhaseConstructedAttribute@CompilerServices@Runtime@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0OnePhaseConstructedAttribute@CompilerServices@Runtime@Platform@@QE$AAA@XZ,@37")
#pragma comment(linker, "/export:??0OperationCanceledException@Platform@@QE$AAA@PE$AAVString@1@@Z=wincorlib_orig.dll.??0OperationCanceledException@Platform@@QE$AAA@PE$AAVString@1@@Z,@38")
#pragma comment(linker, "/export:??0OperationCanceledException@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0OperationCanceledException@Platform@@QE$AAA@XZ,@39")
#pragma comment(linker, "/export:??0OutOfBoundsException@Platform@@QE$AAA@PE$AAVString@1@@Z=wincorlib_orig.dll.??0OutOfBoundsException@Platform@@QE$AAA@PE$AAVString@1@@Z,@40")
#pragma comment(linker, "/export:??0OutOfBoundsException@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0OutOfBoundsException@Platform@@QE$AAA@XZ,@41")
#pragma comment(linker, "/export:??0OutOfMemoryException@Platform@@QE$AAA@PE$AAVString@1@@Z=wincorlib_orig.dll.??0OutOfMemoryException@Platform@@QE$AAA@PE$AAVString@1@@Z,@42")
#pragma comment(linker, "/export:??0OutOfMemoryException@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0OutOfMemoryException@Platform@@QE$AAA@XZ,@43")
#pragma comment(linker, "/export:??0Rect@Foundation@Windows@@QEAA@VPoint@12@0@Z=wincorlib_orig.dll.??0Rect@Foundation@Windows@@QEAA@VPoint@12@0@Z,@44")
#pragma comment(linker, "/export:??0Rect@Foundation@Windows@@QEAA@VPoint@12@VSize@12@@Z=wincorlib_orig.dll.??0Rect@Foundation@Windows@@QEAA@VPoint@12@VSize@12@@Z,@45")
#pragma comment(linker, "/export:??0RepeatBehavior@Animation@Media@Xaml@UI@Windows@@QEAA@N@Z=wincorlib_orig.dll.??0RepeatBehavior@Animation@Media@Xaml@UI@Windows@@QEAA@N@Z,@46")
#pragma comment(linker, "/export:??0STAThreadAttribute@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0STAThreadAttribute@Platform@@QE$AAA@XZ,@47")
#pragma comment(linker, "/export:??0SizeT@Platform@@QEAA@H@Z=wincorlib_orig.dll.??0SizeT@Platform@@QEAA@H@Z,@48")
#pragma comment(linker, "/export:??0SizeT@Platform@@QEAA@PEAX@Z=wincorlib_orig.dll.??0SizeT@Platform@@QEAA@PEAX@Z,@49")
#pragma comment(linker, "/export:??0Type@Platform@@QE$AAA@PE$AAVObject@1@@Z=wincorlib_orig.dll.??0Type@Platform@@QE$AAA@PE$AAVObject@1@@Z,@50")
#pragma comment(linker, "/export:??0Type@Platform@@QE$AAA@VIntPtr@1@@Z=wincorlib_orig.dll.??0Type@Platform@@QE$AAA@VIntPtr@1@@Z,@51")
#pragma comment(linker, "/export:??0Type@Platform@@QE$AAA@VTypeName@Interop@Xaml@UI@Windows@@@Z=wincorlib_orig.dll.??0Type@Platform@@QE$AAA@VTypeName@Interop@Xaml@UI@Windows@@@Z,@52")
#pragma comment(linker, "/export:??0ValueType@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0ValueType@Platform@@QE$AAA@XZ,@53")
#pragma comment(linker, "/export:??0WrongThreadException@Platform@@QE$AAA@PE$AAVString@1@@Z=wincorlib_orig.dll.??0WrongThreadException@Platform@@QE$AAA@PE$AAVString@1@@Z,@54")
#pragma comment(linker, "/export:??0WrongThreadException@Platform@@QE$AAA@XZ=wincorlib_orig.dll.??0WrongThreadException@Platform@@QE$AAA@XZ,@55")
#pragma comment(linker, "/export:??0char16@default@@QEAA@_W@Z=wincorlib_orig.dll.??0char16@default@@QEAA@_W@Z,@56")
#pragma comment(linker, "/export:??0float32@default@@QEAA@M@Z=wincorlib_orig.dll.??0float32@default@@QEAA@M@Z,@57")
#pragma comment(linker, "/export:??0float64@default@@QEAA@N@Z=wincorlib_orig.dll.??0float64@default@@QEAA@N@Z,@58")
#pragma comment(linker, "/export:??0int16@default@@QEAA@F@Z=wincorlib_orig.dll.??0int16@default@@QEAA@F@Z,@59")
#pragma comment(linker, "/export:??0int32@default@@QEAA@H@Z=wincorlib_orig.dll.??0int32@default@@QEAA@H@Z,@60")
#pragma comment(linker, "/export:??0int64@default@@QEAA@_J@Z=wincorlib_orig.dll.??0int64@default@@QEAA@_J@Z,@61")
#pragma comment(linker, "/export:??0int8@default@@QEAA@C@Z=wincorlib_orig.dll.??0int8@default@@QEAA@C@Z,@62")
#pragma comment(linker, "/export:??0uint16@default@@QEAA@G@Z=wincorlib_orig.dll.??0uint16@default@@QEAA@G@Z,@63")
#pragma comment(linker, "/export:??0uint32@default@@QEAA@I@Z=wincorlib_orig.dll.??0uint32@default@@QEAA@I@Z,@64")
#pragma comment(linker, "/export:??0uint64@default@@QEAA@_K@Z=wincorlib_orig.dll.??0uint64@default@@QEAA@_K@Z,@65")
#pragma comment(linker, "/export:??0uint8@default@@QEAA@E@Z=wincorlib_orig.dll.??0uint8@default@@QEAA@E@Z,@66")
#pragma comment(linker, "/export:??BIntPtr@Platform@@SA?AV01@H@Z=wincorlib_orig.dll.??BIntPtr@Platform@@SA?AV01@H@Z,@67")
#pragma comment(linker, "/export:??BIntPtr@Platform@@SA?AV01@PEAX@Z=wincorlib_orig.dll.??BIntPtr@Platform@@SA?AV01@PEAX@Z,@68")
#pragma comment(linker, "/export:??BIntPtr@Platform@@SAPEAXV01@@Z=wincorlib_orig.dll.??BIntPtr@Platform@@SAPEAXV01@@Z,@69")
#pragma comment(linker, "/export:??BType@Platform@@SA?AVTypeName@Interop@Xaml@UI@Windows@@PE$AAV01@@Z=wincorlib_orig.dll.??BType@Platform@@SA?AVTypeName@Interop@Xaml@UI@Windows@@PE$AAV01@@Z,@70")
#pragma comment(linker, "/export:??BType@Platform@@SAPE$AAV01@VTypeName@Interop@Xaml@UI@Windows@@@Z=wincorlib_orig.dll.??BType@Platform@@SAPE$AAV01@VTypeName@Interop@Xaml@UI@Windows@@@Z,@71")
#pragma comment(linker, "/export:??DMatrix3D@Media3D@Media@Xaml@UI@Windows@@SA?AV012345@V012345@0@Z=wincorlib_orig.dll.??DMatrix3D@Media3D@Media@Xaml@UI@Windows@@SA?AV012345@V012345@0@Z,@72")
#pragma comment(linker, "/export:??GDuration@Xaml@UI@Windows@@SA?AV0123@V0123@0@Z=wincorlib_orig.dll.??GDuration@Xaml@UI@Windows@@SA?AV0123@V0123@0@Z,@73")
#pragma comment(linker, "/export:??HDuration@Xaml@UI@Windows@@SA?AV0123@V0123@0@Z=wincorlib_orig.dll.??HDuration@Xaml@UI@Windows@@SA?AV0123@V0123@0@Z,@74")
#pragma comment(linker, "/export:??MDuration@Xaml@UI@Windows@@SA_NV0123@0@Z=wincorlib_orig.dll.??MDuration@Xaml@UI@Windows@@SA_NV0123@0@Z,@75")
#pragma comment(linker, "/export:??NDuration@Xaml@UI@Windows@@SA_NV0123@0@Z=wincorlib_orig.dll.??NDuration@Xaml@UI@Windows@@SA_NV0123@0@Z,@76")
#pragma comment(linker, "/export:??ODuration@Xaml@UI@Windows@@SA_NV0123@0@Z=wincorlib_orig.dll.??ODuration@Xaml@UI@Windows@@SA_NV0123@0@Z,@77")
#pragma comment(linker, "/export:??PDuration@Xaml@UI@Windows@@SA_NV0123@0@Z=wincorlib_orig.dll.??PDuration@Xaml@UI@Windows@@SA_NV0123@0@Z,@78")
#pragma comment(linker, "/export:?AlignedAllocate@Heap@Details@Platform@@SAPEAX_K00@Z=wincorlib_orig.dll.?AlignedAllocate@Heap@Details@Platform@@SAPEAX_K00@Z,@79")
#pragma comment(linker, "/export:?AlignedAllocate@Heap@Details@Platform@@SAPEAX_K0@Z=wincorlib_orig.dll.?AlignedAllocate@Heap@Details@Platform@@SAPEAX_K0@Z,@80")
#pragma comment(linker, "/export:?AlignedAllocateException@Heap@Details@Platform@@SAPEAX_K00@Z=wincorlib_orig.dll.?AlignedAllocateException@Heap@Details@Platform@@SAPEAX_K00@Z,@81")
#pragma comment(linker, "/export:?AlignedAllocateException@Heap@Details@Platform@@SAPEAX_K0@Z=wincorlib_orig.dll.?AlignedAllocateException@Heap@Details@Platform@@SAPEAX_K0@Z,@82")
#pragma comment(linker, "/export:?AlignedFree@Heap@Details@Platform@@SAXPEAX@Z=wincorlib_orig.dll.?AlignedFree@Heap@Details@Platform@@SAXPEAX@Z,@83")
#pragma comment(linker, "/export:?AlignedFreeException@Heap@Details@Platform@@SAXPEAX@Z=wincorlib_orig.dll.?AlignedFreeException@Heap@Details@Platform@@SAXPEAX@Z,@84")
#pragma comment(linker, "/export:?Allocate@Heap@Details@Platform@@SAPEAX_K0@Z=wincorlib_orig.dll.?Allocate@Heap@Details@Platform@@SAPEAX_K0@Z,@85")
#pragma comment(linker, "/export:?Allocate@Heap@Details@Platform@@SAPEAX_K@Z=wincorlib_orig.dll.?Allocate@Heap@Details@Platform@@SAPEAX_K@Z,@86")
#pragma comment(linker, "/export:?AllocateException@Heap@Details@Platform@@SAPEAX_K0@Z=wincorlib_orig.dll.?AllocateException@Heap@Details@Platform@@SAPEAX_K0@Z,@87")
#pragma comment(linker, "/export:?AllocateException@Heap@Details@Platform@@SAPEAX_K@Z=wincorlib_orig.dll.?AllocateException@Heap@Details@Platform@@SAPEAX_K@Z,@88")
#pragma comment(linker, "/export:?Compare@Duration@Xaml@UI@Windows@@SAHV1234@0@Z=wincorlib_orig.dll.?Compare@Duration@Xaml@UI@Windows@@SAHV1234@0@Z,@89")
#pragma comment(linker, "/export:?Contains@Rect@Foundation@Windows@@QEAA_NVPoint@23@@Z=wincorlib_orig.dll.?Contains@Rect@Foundation@Windows@@QEAA_NVPoint@23@@Z,@90")
#pragma comment(linker, "/export:?CreateException@Exception@Platform@@SAPE$AAV12@H@Z=wincorlib_orig.dll.?CreateException@Exception@Platform@@SAPE$AAV12@H@Z,@91")
#pragma comment(linker, "/export:?CreateException@Exception@Platform@@SAPE$AAV12@HPE$AAVString@2@@Z=wincorlib_orig.dll.?CreateException@Exception@Platform@@SAPE$AAV12@HPE$AAVString@2@@Z,@92")
#pragma comment(linker, "/export:?CreateValue@Details@Platform@@YAPE$AAVObject@2@W4TypeCode@2@PEBX@Z=wincorlib_orig.dll.?CreateValue@Details@Platform@@YAPE$AAVObject@2@W4TypeCode@2@PEBX@Z,@93")
#pragma comment(linker, "/export:?EnableFactoryCache@@YAXXZ=wincorlib_orig.dll.?EnableFactoryCache@@YAXXZ,@94")
#pragma comment(linker, "/export:?EnumerateAllocatedObjects@Heap@Details@Platform@@SAXPE$AAVHeapEntryHandler@23@@Z=wincorlib_orig.dll.?EnumerateAllocatedObjects@Heap@Details@Platform@@SAXPE$AAVHeapEntryHandler@23@@Z,@95")
#pragma comment(linker, "/export:?Equals@Attribute@Metadata@Platform@@QE$AAA_NPE$AAVObject@3@@Z=wincorlib_orig.dll.?Equals@Attribute@Metadata@Platform@@QE$AAA_NPE$AAVObject@3@@Z,@96")
#pragma comment(linker, "/export:?Equals@Boolean@Platform@@QEAA_NPE$AAVObject@2@@Z=wincorlib_orig.dll.?Equals@Boolean@Platform@@QEAA_NPE$AAVObject@2@@Z,@97")
#pragma comment(linker, "/export:?Equals@Delegate@Platform@@QE$AAA_NPE$AAVObject@2@@Z=wincorlib_orig.dll.?Equals@Delegate@Platform@@QE$AAA_NPE$AAVObject@2@@Z,@98")
#pragma comment(linker, "/export:?Equals@Enum@Platform@@QE$AAA_NPE$AAVObject@2@@Z=wincorlib_orig.dll.?Equals@Enum@Platform@@QE$AAA_NPE$AAVObject@2@@Z,@99")
#pragma comment(linker, "/export:?Equals@Exception@Platform@@UE$AAA_NPE$AAVObject@2@@Z=wincorlib_orig.dll.?Equals@Exception@Platform@@UE$AAA_NPE$AAVObject@2@@Z,@100")
#pragma comment(linker, "/export:?Equals@MTAThreadAttribute@Platform@@QE$AAA_NPE$AAVObject@2@@Z=wincorlib_orig.dll.?Equals@MTAThreadAttribute@Platform@@QE$AAA_NPE$AAVObject@2@@Z,@101")
#pragma comment(linker, "/export:?Equals@Object@Platform@@QE$AAA_NPE$AAV12@@Z=wincorlib_orig.dll.?Equals@Object@Platform@@QE$AAA_NPE$AAV12@@Z,@102")
#pragma comment(linker, "/export:?Equals@OnePhaseConstructedAttribute@CompilerServices@Runtime@Platform@@QE$AAA_NPE$AAVObject@4@@Z=wincorlib_orig.dll.?Equals@OnePhaseConstructedAttribute@CompilerServices@Runtime@Platform@@QE$AAA_NPE$AAVObject@4@@Z,@103")
#pragma comment(linker, "/export:?Equals@STAThreadAttribute@Platform@@QE$AAA_NPE$AAVObject@2@@Z=wincorlib_orig.dll.?Equals@STAThreadAttribute@Platform@@QE$AAA_NPE$AAVObject@2@@Z,@104")
#pragma comment(linker, "/export:?Equals@Type@Platform@@UE$AAA_NPE$AAVObject@2@@Z=wincorlib_orig.dll.?Equals@Type@Platform@@UE$AAA_NPE$AAVObject@2@@Z,@105")
#pragma comment(linker, "/export:?Equals@ValueType@Platform@@QE$AAA_NPE$AAVObject@2@@Z=wincorlib_orig.dll.?Equals@ValueType@Platform@@QE$AAA_NPE$AAVObject@2@@Z,@106")
#pragma comment(linker, "/export:?Equals@char16@default@@QEAA_NPE$AAVObject@Platform@@@Z=wincorlib_orig.dll.?Equals@char16@default@@QEAA_NPE$AAVObject@Platform@@@Z,@107")
#pragma comment(linker, "/export:?Equals@float32@default@@QEAA_NPE$AAVObject@Platform@@@Z=wincorlib_orig.dll.?Equals@float32@default@@QEAA_NPE$AAVObject@Platform@@@Z,@108")
#pragma comment(linker, "/export:?Equals@float64@default@@QEAA_NPE$AAVObject@Platform@@@Z=wincorlib_orig.dll.?Equals@float64@default@@QEAA_NPE$AAVObject@Platform@@@Z,@109")
#pragma comment(linker, "/export:?Equals@int16@default@@QEAA_NPE$AAVObject@Platform@@@Z=wincorlib_orig.dll.?Equals@int16@default@@QEAA_NPE$AAVObject@Platform@@@Z,@110")
#pragma comment(linker, "/export:?Equals@int32@default@@QEAA_NPE$AAVObject@Platform@@@Z=wincorlib_orig.dll.?Equals@int32@default@@QEAA_NPE$AAVObject@Platform@@@Z,@111")
#pragma comment(linker, "/export:?Equals@int64@default@@QEAA_NPE$AAVObject@Platform@@@Z=wincorlib_orig.dll.?Equals@int64@default@@QEAA_NPE$AAVObject@Platform@@@Z,@112")
#pragma comment(linker, "/export:?Equals@int8@default@@QEAA_NPE$AAVObject@Platform@@@Z=wincorlib_orig.dll.?Equals@int8@default@@QEAA_NPE$AAVObject@Platform@@@Z,@113")
#pragma comment(linker, "/export:?Equals@uint16@default@@QEAA_NPE$AAVObject@Platform@@@Z=wincorlib_orig.dll.?Equals@uint16@default@@QEAA_NPE$AAVObject@Platform@@@Z,@114")
#pragma comment(linker, "/export:?Equals@uint32@default@@QEAA_NPE$AAVObject@Platform@@@Z=wincorlib_orig.dll.?Equals@uint32@default@@QEAA_NPE$AAVObject@Platform@@@Z,@115")
#pragma comment(linker, "/export:?Equals@uint64@default@@QEAA_NPE$AAVObject@Platform@@@Z=wincorlib_orig.dll.?Equals@uint64@default@@QEAA_NPE$AAVObject@Platform@@@Z,@116")
#pragma comment(linker, "/export:?Equals@uint8@default@@QEAA_NPE$AAVObject@Platform@@@Z=wincorlib_orig.dll.?Equals@uint8@default@@QEAA_NPE$AAVObject@Platform@@@Z,@117")
#pragma comment(linker, "/export:?EventSourceAdd@Details@Platform@@YA?AVEventRegistrationToken@Foundation@Windows@@PEAPEAXPEAUEventLock@12@PE$AAVDelegate@2@@Z=wincorlib_orig.dll.?EventSourceAdd@Details@Platform@@YA?AVEventRegistrationToken@Foundation@Windows@@PEAPEAXPEAUEventLock@12@PE$AAVDelegate@2@@Z,@118")
#pragma comment(linker, "/export:?EventSourceGetTargetArray@Details@Platform@@YAPEAXPEAXPEAUEventLock@12@@Z=wincorlib_orig.dll.?EventSourceGetTargetArray@Details@Platform@@YAPEAXPEAXPEAUEventLock@12@@Z,@119")
#pragma comment(linker, "/export:?EventSourceGetTargetArrayEvent@Details@Platform@@YAPEAXPEAXIPEBXPEA_J@Z=wincorlib_orig.dll.?EventSourceGetTargetArrayEvent@Details@Platform@@YAPEAXPEAXIPEBXPEA_J@Z,@120")
#pragma comment(linker, "/export:?EventSourceGetTargetArraySize@Details@Platform@@YAIPEAX@Z=wincorlib_orig.dll.?EventSourceGetTargetArraySize@Details@Platform@@YAIPEAX@Z,@121")
#pragma comment(linker, "/export:?EventSourceInitialize@Details@Platform@@YAXPEAPEAX@Z=wincorlib_orig.dll.?EventSourceInitialize@Details@Platform@@YAXPEAPEAX@Z,@122")
#pragma comment(linker, "/export:?EventSourceRemove@Details@Platform@@YAXPEAPEAXPEAUEventLock@12@VEventRegistrationToken@Foundation@Windows@@@Z=wincorlib_orig.dll.?EventSourceRemove@Details@Platform@@YAXPEAPEAXPEAUEventLock@12@VEventRegistrationToken@Foundation@Windows@@@Z,@123")
#pragma comment(linker, "/export:?EventSourceUninitialize@Details@Platform@@YAXPEAPEAX@Z=wincorlib_orig.dll.?EventSourceUninitialize@Details@Platform@@YAXPEAPEAX@Z,@124")
#pragma comment(linker, "/export:?FlushFactoryCache@@YAXXZ=wincorlib_orig.dll.?FlushFactoryCache@@YAXXZ,@125")
#pragma comment(linker, "/export:?Free@Heap@Details@Platform@@SAXPEAX@Z=wincorlib_orig.dll.?Free@Heap@Details@Platform@@SAXPEAX@Z,@126")
#pragma comment(linker, "/export:?FreeException@Heap@Details@Platform@@SAXPEAX@Z=wincorlib_orig.dll.?FreeException@Heap@Details@Platform@@SAXPEAX@Z,@127")
#pragma comment(linker, "/export:?GetActivationFactory@Details@Platform@@YAJPEAVModuleBase@1WRL@Microsoft@@PEAUHSTRING__@@PEAPEAUIActivationFactory@@@Z=wincorlib_orig.dll.?GetActivationFactory@Details@Platform@@YAJPEAVModuleBase@1WRL@Microsoft@@PEAUHSTRING__@@PEAPEAUIActivationFactory@@@Z,@128")
#pragma comment(linker, "/export:?GetActivationFactoryByPCWSTR@@YAJPEAXAEAVGuid@Platform@@PEAPEAX@Z=wincorlib_orig.dll.?GetActivationFactoryByPCWSTR@@YAJPEAXAEAVGuid@Platform@@PEAPEAX@Z,@129")
//#pragma comment(linker, "/export:?GetCmdArguments@Details@Platform@@YAPEAPEA_WPEAH@Z=wincorlib_orig.dll.?GetCmdArguments@Details@Platform@@YAPEAPEA_WPEAH@Z,@130")
#pragma comment(linker, "/export:?GetHashCode@Attribute@Metadata@Platform@@QE$AAAHXZ=wincorlib_orig.dll.?GetHashCode@Attribute@Metadata@Platform@@QE$AAAHXZ,@131")
#pragma comment(linker, "/export:?GetHashCode@Boolean@Platform@@QEAAHXZ=wincorlib_orig.dll.?GetHashCode@Boolean@Platform@@QEAAHXZ,@132")
#pragma comment(linker, "/export:?GetHashCode@Delegate@Platform@@QE$AAAHXZ=wincorlib_orig.dll.?GetHashCode@Delegate@Platform@@QE$AAAHXZ,@133")
#pragma comment(linker, "/export:?GetHashCode@Enum@Platform@@QE$AAAHXZ=wincorlib_orig.dll.?GetHashCode@Enum@Platform@@QE$AAAHXZ,@134")
#pragma comment(linker, "/export:?GetHashCode@Exception@Platform@@UE$AAAHXZ=wincorlib_orig.dll.?GetHashCode@Exception@Platform@@UE$AAAHXZ,@135")
#pragma comment(linker, "/export:?GetHashCode@Guid@Platform@@QEAAHXZ=wincorlib_orig.dll.?GetHashCode@Guid@Platform@@QEAAHXZ,@136")
#pragma comment(linker, "/export:?GetHashCode@MTAThreadAttribute@Platform@@QE$AAAHXZ=wincorlib_orig.dll.?GetHashCode@MTAThreadAttribute@Platform@@QE$AAAHXZ,@137")
#pragma comment(linker, "/export:?GetHashCode@Object@Platform@@QE$AAAHXZ=wincorlib_orig.dll.?GetHashCode@Object@Platform@@QE$AAAHXZ,@138")
#pragma comment(linker, "/export:?GetHashCode@OnePhaseConstructedAttribute@CompilerServices@Runtime@Platform@@QE$AAAHXZ=wincorlib_orig.dll.?GetHashCode@OnePhaseConstructedAttribute@CompilerServices@Runtime@Platform@@QE$AAAHXZ,@139")
#pragma comment(linker, "/export:?GetHashCode@STAThreadAttribute@Platform@@QE$AAAHXZ=wincorlib_orig.dll.?GetHashCode@STAThreadAttribute@Platform@@QE$AAAHXZ,@140")
#pragma comment(linker, "/export:?GetHashCode@Type@Platform@@UE$AAAHXZ=wincorlib_orig.dll.?GetHashCode@Type@Platform@@UE$AAAHXZ,@141")
#pragma comment(linker, "/export:?GetHashCode@ValueType@Platform@@QE$AAAHXZ=wincorlib_orig.dll.?GetHashCode@ValueType@Platform@@QE$AAAHXZ,@142")
#pragma comment(linker, "/export:?GetHashCode@char16@default@@QEAAHXZ=wincorlib_orig.dll.?GetHashCode@char16@default@@QEAAHXZ,@143")
#pragma comment(linker, "/export:?GetHashCode@float32@default@@QEAAHXZ=wincorlib_orig.dll.?GetHashCode@float32@default@@QEAAHXZ,@144")
#pragma comment(linker, "/export:?GetHashCode@float64@default@@QEAAHXZ=wincorlib_orig.dll.?GetHashCode@float64@default@@QEAAHXZ,@145")
#pragma comment(linker, "/export:?GetHashCode@int16@default@@QEAAHXZ=wincorlib_orig.dll.?GetHashCode@int16@default@@QEAAHXZ,@146")
#pragma comment(linker, "/export:?GetHashCode@int32@default@@QEAAHXZ=wincorlib_orig.dll.?GetHashCode@int32@default@@QEAAHXZ,@147")
#pragma comment(linker, "/export:?GetHashCode@int64@default@@QEAAHXZ=wincorlib_orig.dll.?GetHashCode@int64@default@@QEAAHXZ,@148")
#pragma comment(linker, "/export:?GetHashCode@int8@default@@QEAAHXZ=wincorlib_orig.dll.?GetHashCode@int8@default@@QEAAHXZ,@149")
#pragma comment(linker, "/export:?GetHashCode@uint16@default@@QEAAHXZ=wincorlib_orig.dll.?GetHashCode@uint16@default@@QEAAHXZ,@150")
#pragma comment(linker, "/export:?GetHashCode@uint32@default@@QEAAHXZ=wincorlib_orig.dll.?GetHashCode@uint32@default@@QEAAHXZ,@151")
#pragma comment(linker, "/export:?GetHashCode@uint64@default@@QEAAHXZ=wincorlib_orig.dll.?GetHashCode@uint64@default@@QEAAHXZ,@152")
#pragma comment(linker, "/export:?GetHashCode@uint8@default@@QEAAHXZ=wincorlib_orig.dll.?GetHashCode@uint8@default@@QEAAHXZ,@153")
#pragma comment(linker, "/export:?GetIBoxArrayVtable@Details@Platform@@YAPEAXPEAX@Z=wincorlib_orig.dll.?GetIBoxArrayVtable@Details@Platform@@YAPEAXPEAX@Z,@154")
#pragma comment(linker, "/export:?GetIBoxVtable@Details@Platform@@YAPEAXPEAX@Z=wincorlib_orig.dll.?GetIBoxVtable@Details@Platform@@YAPEAXPEAX@Z,@155")
#pragma comment(linker, "/export:?GetIidsFn@@YAJHPEAKPEBU__s_GUID@@PEAPEAVGuid@Platform@@@Z=wincorlib_orig.dll.?GetIidsFn@@YAJHPEAKPEBU__s_GUID@@PEAPEAVGuid@Platform@@@Z,@156")
#pragma comment(linker, "/export:?GetObjectContext@Details@Platform@@YAPEAUIUnknown@@XZ=wincorlib_orig.dll.?GetObjectContext@Details@Platform@@YAPEAUIUnknown@@XZ,@157")
#pragma comment(linker, "/export:?GetProxyImpl@Details@Platform@@YAJPEAUIUnknown@@AEBU_GUID@@0PEAPEAU3@@Z=wincorlib_orig.dll.?GetProxyImpl@Details@Platform@@YAJPEAUIUnknown@@AEBU_GUID@@0PEAPEAU3@@Z,@158")
#pragma comment(linker, "/export:?GetType@Boolean@Platform@@QEAAPE$AAVType@2@XZ=wincorlib_orig.dll.?GetType@Boolean@Platform@@QEAAPE$AAVType@2@XZ,@159")
#pragma comment(linker, "/export:?GetType@Guid@Platform@@QEAAPE$AAVType@2@XZ=wincorlib_orig.dll.?GetType@Guid@Platform@@QEAAPE$AAVType@2@XZ,@160")
#pragma comment(linker, "/export:?GetType@Object@Platform@@QE$AAAPE$AAVType@2@XZ=wincorlib_orig.dll.?GetType@Object@Platform@@QE$AAAPE$AAVType@2@XZ,@161")
#pragma comment(linker, "/export:?GetType@char16@default@@QEAAPE$AAVType@Platform@@XZ=wincorlib_orig.dll.?GetType@char16@default@@QEAAPE$AAVType@Platform@@XZ,@162")
#pragma comment(linker, "/export:?GetType@float32@default@@QEAAPE$AAVType@Platform@@XZ=wincorlib_orig.dll.?GetType@float32@default@@QEAAPE$AAVType@Platform@@XZ,@163")
#pragma comment(linker, "/export:?GetType@float64@default@@QEAAPE$AAVType@Platform@@XZ=wincorlib_orig.dll.?GetType@float64@default@@QEAAPE$AAVType@Platform@@XZ,@164")
#pragma comment(linker, "/export:?GetType@int16@default@@QEAAPE$AAVType@Platform@@XZ=wincorlib_orig.dll.?GetType@int16@default@@QEAAPE$AAVType@Platform@@XZ,@165")
#pragma comment(linker, "/export:?GetType@int32@default@@QEAAPE$AAVType@Platform@@XZ=wincorlib_orig.dll.?GetType@int32@default@@QEAAPE$AAVType@Platform@@XZ,@166")
#pragma comment(linker, "/export:?GetType@int64@default@@QEAAPE$AAVType@Platform@@XZ=wincorlib_orig.dll.?GetType@int64@default@@QEAAPE$AAVType@Platform@@XZ,@167")
#pragma comment(linker, "/export:?GetType@int8@default@@QEAAPE$AAVType@Platform@@XZ=wincorlib_orig.dll.?GetType@int8@default@@QEAAPE$AAVType@Platform@@XZ,@168")
#pragma comment(linker, "/export:?GetType@uint16@default@@QEAAPE$AAVType@Platform@@XZ=wincorlib_orig.dll.?GetType@uint16@default@@QEAAPE$AAVType@Platform@@XZ,@169")
#pragma comment(linker, "/export:?GetType@uint32@default@@QEAAPE$AAVType@Platform@@XZ=wincorlib_orig.dll.?GetType@uint32@default@@QEAAPE$AAVType@Platform@@XZ,@170")
#pragma comment(linker, "/export:?GetType@uint64@default@@QEAAPE$AAVType@Platform@@XZ=wincorlib_orig.dll.?GetType@uint64@default@@QEAAPE$AAVType@Platform@@XZ,@171")
#pragma comment(linker, "/export:?GetType@uint8@default@@QEAAPE$AAVType@Platform@@XZ=wincorlib_orig.dll.?GetType@uint8@default@@QEAAPE$AAVType@Platform@@XZ,@172")
#pragma comment(linker, "/export:?GetTypeCode@Type@Platform@@SA?AW4TypeCode@2@PE$AAV12@@Z=wincorlib_orig.dll.?GetTypeCode@Type@Platform@@SA?AW4TypeCode@2@PE$AAV12@@Z,@173")
#pragma comment(linker, "/export:?GetWeakReference@Details@Platform@@YAPEAU__abi_IUnknown@@QE$ADVObject@2@@Z=wincorlib_orig.dll.?GetWeakReference@Details@Platform@@YAPEAU__abi_IUnknown@@QE$ADVObject@2@@Z,@174")
#pragma comment(linker, "/export:?InitControlBlock@ControlBlock@Details@Platform@@AEAAXPEAX_N11@Z=wincorlib_orig.dll.?InitControlBlock@ControlBlock@Details@Platform@@AEAAXPEAX_N11@Z,@175")
#pragma comment(linker, "/export:?InitializeData@Details@Platform@@YAJH@Z=wincorlib_orig.dll.?InitializeData@Details@Platform@@YAJH@Z,@176")
#pragma comment(linker, "/export:?Intersect@Rect@Foundation@Windows@@QEAAXV123@@Z=wincorlib_orig.dll.?Intersect@Rect@Foundation@Windows@@QEAAXV123@@Z,@177")
#pragma comment(linker, "/export:?IntersectsWith@Rect@Foundation@Windows@@QEAA_NV123@@Z=wincorlib_orig.dll.?IntersectsWith@Rect@Foundation@Windows@@QEAA_NV123@@Z,@178")
#pragma comment(linker, "/export:?Invert@Matrix3D@Media3D@Media@Xaml@UI@Windows@@QEAAXXZ=wincorlib_orig.dll.?Invert@Matrix3D@Media3D@Media@Xaml@UI@Windows@@QEAAXXZ,@179")
#pragma comment(linker, "/export:?ReCreateException@Exception@Platform@@SAPE$AAV12@H@Z=wincorlib_orig.dll.?ReCreateException@Exception@Platform@@SAPE$AAV12@H@Z,@180")
#pragma comment(linker, "/export:?ReCreateFromException@Details@Platform@@YAJPE$AAVException@2@@Z=wincorlib_orig.dll.?ReCreateFromException@Details@Platform@@YAJPE$AAVException@2@@Z,@181")
#pragma comment(linker, "/export:?ReferenceEquals@Object@Platform@@SA_NPE$AAV12@0@Z=wincorlib_orig.dll.?ReferenceEquals@Object@Platform@@SA_NPE$AAV12@0@Z,@182")
#pragma comment(linker, "/export:?ReferenceEquals@Object@Platform@@SA_NPE$AAVString@2@0@Z=wincorlib_orig.dll.?ReferenceEquals@Object@Platform@@SA_NPE$AAVString@2@0@Z,@183")
#pragma comment(linker, "/export:?RegisterFactories@Details@Platform@@YAPE$AAVObject@2@PEAPEAVModuleBase@1WRL@Microsoft@@PEAPEAU__abi_Module@@P6AXXZ@Z=wincorlib_orig.dll.?RegisterFactories@Details@Platform@@YAPE$AAVObject@2@PEAPEAVModuleBase@1WRL@Microsoft@@PEAPEAU__abi_Module@@P6AXXZ@Z,@184")
#pragma comment(linker, "/export:?ReleaseInContextImpl@Details@Platform@@YAJPEAUIUnknown@@0@Z=wincorlib_orig.dll.?ReleaseInContextImpl@Details@Platform@@YAJPEAUIUnknown@@0@Z,@185")
#pragma comment(linker, "/export:?ReleaseTarget@ControlBlock@Details@Platform@@AEAAXXZ=wincorlib_orig.dll.?ReleaseTarget@ControlBlock@Details@Platform@@AEAAXXZ,@186")
#pragma comment(linker, "/export:?ResolveWeakReference@Details@Platform@@YAPE$AAVObject@2@AEBU_GUID@@PEAPEAU__abi_IUnknown@@@Z=wincorlib_orig.dll.?ResolveWeakReference@Details@Platform@@YAPE$AAVObject@2@AEBU_GUID@@PEAPEAU__abi_IUnknown@@@Z,@187")
#pragma comment(linker, "/export:?RunApplicationServer@Details@Platform@@YAXPEAPEAVModuleBase@1WRL@Microsoft@@PEAPEAU__abi_Module@@PEB_W@Z=wincorlib_orig.dll.?RunApplicationServer@Details@Platform@@YAXPEAPEAVModuleBase@1WRL@Microsoft@@PEAPEAU__abi_Module@@PEB_W@Z,@188")
#pragma comment(linker, "/export:?RunServer@Details@Platform@@YAXPEAPEAVModuleBase@1WRL@Microsoft@@PEAPEAU__abi_Module@@PEB_W@Z=wincorlib_orig.dll.?RunServer@Details@Platform@@YAXPEAPEAVModuleBase@1WRL@Microsoft@@PEAPEAU__abi_Module@@PEB_W@Z,@189")
#pragma comment(linker, "/export:?TerminateModule@Details@Platform@@YA_NPEAVModuleBase@1WRL@Microsoft@@@Z=wincorlib_orig.dll.?TerminateModule@Details@Platform@@YA_NPEAVModuleBase@1WRL@Microsoft@@@Z,@190")
#pragma comment(linker, "/export:?ToInt32@IntPtr@Platform@@QEAAHXZ=wincorlib_orig.dll.?ToInt32@IntPtr@Platform@@QEAAHXZ,@191")
#pragma comment(linker, "/export:?ToString@Attribute@Metadata@Platform@@QE$AAAPE$AAVString@3@XZ=wincorlib_orig.dll.?ToString@Attribute@Metadata@Platform@@QE$AAAPE$AAVString@3@XZ,@192")
#pragma comment(linker, "/export:?ToString@Boolean@Platform@@QEAAPE$AAVString@2@XZ=wincorlib_orig.dll.?ToString@Boolean@Platform@@QEAAPE$AAVString@2@XZ,@193")
#pragma comment(linker, "/export:?ToString@Delegate@Platform@@QE$AAAPE$AAVString@2@XZ=wincorlib_orig.dll.?ToString@Delegate@Platform@@QE$AAAPE$AAVString@2@XZ,@194")
#pragma comment(linker, "/export:?ToString@Enum@Platform@@QE$AAAPE$AAVString@2@XZ=wincorlib_orig.dll.?ToString@Enum@Platform@@QE$AAAPE$AAVString@2@XZ,@195")
#pragma comment(linker, "/export:?ToString@Exception@Platform@@UE$AAAPE$AAVString@2@XZ=wincorlib_orig.dll.?ToString@Exception@Platform@@UE$AAAPE$AAVString@2@XZ,@196")
#pragma comment(linker, "/export:?ToString@Guid@Platform@@QEAAPE$AAVString@2@XZ=wincorlib_orig.dll.?ToString@Guid@Platform@@QEAAPE$AAVString@2@XZ,@197")
#pragma comment(linker, "/export:?ToString@MTAThreadAttribute@Platform@@QE$AAAPE$AAVString@2@XZ=wincorlib_orig.dll.?ToString@MTAThreadAttribute@Platform@@QE$AAAPE$AAVString@2@XZ,@198")
#pragma comment(linker, "/export:?ToString@OnePhaseConstructedAttribute@CompilerServices@Runtime@Platform@@QE$AAAPE$AAVString@4@XZ=wincorlib_orig.dll.?ToString@OnePhaseConstructedAttribute@CompilerServices@Runtime@Platform@@QE$AAAPE$AAVString@4@XZ,@199")
#pragma comment(linker, "/export:?ToString@STAThreadAttribute@Platform@@QE$AAAPE$AAVString@2@XZ=wincorlib_orig.dll.?ToString@STAThreadAttribute@Platform@@QE$AAAPE$AAVString@2@XZ,@200")
#pragma comment(linker, "/export:?ToString@Type@Platform@@UE$AAAPE$AAVString@2@XZ=wincorlib_orig.dll.?ToString@Type@Platform@@UE$AAAPE$AAVString@2@XZ,@201")
#pragma comment(linker, "/export:?ToString@ValueType@Platform@@QE$AAAPE$AAVString@2@XZ=wincorlib_orig.dll.?ToString@ValueType@Platform@@QE$AAAPE$AAVString@2@XZ,@202")
#pragma comment(linker, "/export:?ToString@char16@default@@QEAAPE$AAVString@Platform@@XZ=wincorlib_orig.dll.?ToString@char16@default@@QEAAPE$AAVString@Platform@@XZ,@203")
#pragma comment(linker, "/export:?ToString@float32@default@@QEAAPE$AAVString@Platform@@XZ=wincorlib_orig.dll.?ToString@float32@default@@QEAAPE$AAVString@Platform@@XZ,@204")
#pragma comment(linker, "/export:?ToString@float64@default@@QEAAPE$AAVString@Platform@@XZ=wincorlib_orig.dll.?ToString@float64@default@@QEAAPE$AAVString@Platform@@XZ,@205")
#pragma comment(linker, "/export:?ToString@int16@default@@QEAAPE$AAVString@Platform@@XZ=wincorlib_orig.dll.?ToString@int16@default@@QEAAPE$AAVString@Platform@@XZ,@206")
#pragma comment(linker, "/export:?ToString@int32@default@@QEAAPE$AAVString@Platform@@XZ=wincorlib_orig.dll.?ToString@int32@default@@QEAAPE$AAVString@Platform@@XZ,@207")
#pragma comment(linker, "/export:?ToString@int64@default@@QEAAPE$AAVString@Platform@@XZ=wincorlib_orig.dll.?ToString@int64@default@@QEAAPE$AAVString@Platform@@XZ,@208")
#pragma comment(linker, "/export:?ToString@int8@default@@QEAAPE$AAVString@Platform@@XZ=wincorlib_orig.dll.?ToString@int8@default@@QEAAPE$AAVString@Platform@@XZ,@209")
#pragma comment(linker, "/export:?ToString@uint16@default@@QEAAPE$AAVString@Platform@@XZ=wincorlib_orig.dll.?ToString@uint16@default@@QEAAPE$AAVString@Platform@@XZ,@210")
#pragma comment(linker, "/export:?ToString@uint32@default@@QEAAPE$AAVString@Platform@@XZ=wincorlib_orig.dll.?ToString@uint32@default@@QEAAPE$AAVString@Platform@@XZ,@211")
#pragma comment(linker, "/export:?ToString@uint64@default@@QEAAPE$AAVString@Platform@@XZ=wincorlib_orig.dll.?ToString@uint64@default@@QEAAPE$AAVString@Platform@@XZ,@212")
#pragma comment(linker, "/export:?ToString@uint8@default@@QEAAPE$AAVString@Platform@@XZ=wincorlib_orig.dll.?ToString@uint8@default@@QEAAPE$AAVString@Platform@@XZ,@213")
#pragma comment(linker, "/export:?UninitializeData@Details@Platform@@YAXH@Z=wincorlib_orig.dll.?UninitializeData@Details@Platform@@YAXH@Z,@214")
#pragma comment(linker, "/export:?Union@Rect@Foundation@Windows@@QEAAXV123@@Z=wincorlib_orig.dll.?Union@Rect@Foundation@Windows@@QEAAXV123@@Z,@215")
#pragma comment(linker, "/export:?Union@Rect@Foundation@Windows@@QEAAXVPoint@23@@Z=wincorlib_orig.dll.?Union@Rect@Foundation@Windows@@QEAAXVPoint@23@@Z,@216")
#pragma comment(linker, "/export:?WriteLine@Console@Details@Platform@@SAXPE$AAVObject@3@@Z=wincorlib_orig.dll.?WriteLine@Console@Details@Platform@@SAXPE$AAVObject@3@@Z,@217")
#pragma comment(linker, "/export:?WriteLine@Console@Details@Platform@@SAXPE$AAVString@3@@Z=wincorlib_orig.dll.?WriteLine@Console@Details@Platform@@SAXPE$AAVString@3@@Z,@218")
#pragma comment(linker, "/export:?WriteLine@Console@Details@Platform@@SAXXZ=wincorlib_orig.dll.?WriteLine@Console@Details@Platform@@SAXXZ,@219")
#pragma comment(linker, "/export:?__abi_FailFast@@YAXXZ=wincorlib_orig.dll.?__abi_FailFast@@YAXXZ,@220")
#pragma comment(linker, "/export:?__abi_ObjectToString@__abi_details@@YAPE$AAVString@Platform@@PE$AAVObject@3@_N@Z=wincorlib_orig.dll.?__abi_ObjectToString@__abi_details@@YAPE$AAVString@Platform@@PE$AAVObject@3@_N@Z,@221")
#pragma comment(linker, "/export:?__abi_Resolve@ControlBlock@Details@Platform@@UEAAJAEAVGuid@3@PEAPEAU__abi_IInspectable@@@Z=wincorlib_orig.dll.?__abi_Resolve@ControlBlock@Details@Platform@@UEAAJAEAVGuid@3@PEAPEAU__abi_IInspectable@@@Z,@222")
#pragma comment(linker, "/export:?__abi_WinRTraiseAccessDeniedException@@YAXXZ=wincorlib_orig.dll.?__abi_WinRTraiseAccessDeniedException@@YAXXZ,@223")
#pragma comment(linker, "/export:?__abi_WinRTraiseCOMException@@YAXJ@Z=wincorlib_orig.dll.?__abi_WinRTraiseCOMException@@YAXJ@Z,@224")
#pragma comment(linker, "/export:?__abi_WinRTraiseChangedStateException@@YAXXZ=wincorlib_orig.dll.?__abi_WinRTraiseChangedStateException@@YAXXZ,@225")
#pragma comment(linker, "/export:?__abi_WinRTraiseClassNotRegisteredException@@YAXXZ=wincorlib_orig.dll.?__abi_WinRTraiseClassNotRegisteredException@@YAXXZ,@226")
#pragma comment(linker, "/export:?__abi_WinRTraiseDisconnectedException@@YAXXZ=wincorlib_orig.dll.?__abi_WinRTraiseDisconnectedException@@YAXXZ,@227")
#pragma comment(linker, "/export:?__abi_WinRTraiseFailureException@@YAXXZ=wincorlib_orig.dll.?__abi_WinRTraiseFailureException@@YAXXZ,@228")
#pragma comment(linker, "/export:?__abi_WinRTraiseInvalidArgumentException@@YAXXZ=wincorlib_orig.dll.?__abi_WinRTraiseInvalidArgumentException@@YAXXZ,@229")
#pragma comment(linker, "/export:?__abi_WinRTraiseInvalidCastException@@YAXXZ=wincorlib_orig.dll.?__abi_WinRTraiseInvalidCastException@@YAXXZ,@230")
#pragma comment(linker, "/export:?__abi_WinRTraiseNotImplementedException@@YAXXZ=wincorlib_orig.dll.?__abi_WinRTraiseNotImplementedException@@YAXXZ,@231")
#pragma comment(linker, "/export:?__abi_WinRTraiseNullReferenceException@@YAXXZ=wincorlib_orig.dll.?__abi_WinRTraiseNullReferenceException@@YAXXZ,@232")
#pragma comment(linker, "/export:?__abi_WinRTraiseObjectDisposedException@@YAXXZ=wincorlib_orig.dll.?__abi_WinRTraiseObjectDisposedException@@YAXXZ,@233")
#pragma comment(linker, "/export:?__abi_WinRTraiseOperationCanceledException@@YAXXZ=wincorlib_orig.dll.?__abi_WinRTraiseOperationCanceledException@@YAXXZ,@234")
#pragma comment(linker, "/export:?__abi_WinRTraiseOutOfBoundsException@@YAXXZ=wincorlib_orig.dll.?__abi_WinRTraiseOutOfBoundsException@@YAXXZ,@235")
#pragma comment(linker, "/export:?__abi_WinRTraiseOutOfMemoryException@@YAXXZ=wincorlib_orig.dll.?__abi_WinRTraiseOutOfMemoryException@@YAXXZ,@236")
#pragma comment(linker, "/export:?__abi_WinRTraiseWrongThreadException@@YAXXZ=wincorlib_orig.dll.?__abi_WinRTraiseWrongThreadException@@YAXXZ,@237")
#pragma comment(linker, "/export:?__abi_cast_Object_to_String@__abi_details@@YAPE$AAVString@Platform@@_NPE$AAVObject@3@@Z=wincorlib_orig.dll.?__abi_cast_Object_to_String@__abi_details@@YAPE$AAVString@Platform@@_NPE$AAVObject@3@@Z,@238")
#pragma comment(linker, "/export:?__abi_cast_String_to_Object@__abi_details@@YAPE$AAVObject@Platform@@PE$AAVString@3@@Z=wincorlib_orig.dll.?__abi_cast_String_to_Object@__abi_details@@YAPE$AAVObject@Platform@@PE$AAVString@3@@Z,@239")
#pragma comment(linker, "/export:?__abi_make_type_id@@YAPE$AAVType@Platform@@AEBU__abi_type_descriptor@@@Z=wincorlib_orig.dll.?__abi_make_type_id@@YAPE$AAVType@Platform@@AEBU__abi_type_descriptor@@@Z,@240")
#pragma comment(linker, "/export:?__abi_translateCurrentException@@YAJ_N@Z=wincorlib_orig.dll.?__abi_translateCurrentException@@YAJ_N@Z,@241")
#pragma comment(linker, "/export:?__getActivationFactoryByHSTRING@@YAJPEAUHSTRING__@@AEAVGuid@Platform@@PEAPEAX@Z=wincorlib_orig.dll.?__getActivationFactoryByHSTRING@@YAJPEAUHSTRING__@@AEAVGuid@Platform@@PEAPEAX@Z,@242")
#pragma comment(linker, "/export:?get@Bottom@Rect@Foundation@Windows@@QEAAMXZ=wincorlib_orig.dll.?get@Bottom@Rect@Foundation@Windows@@QEAAMXZ,@243")
#pragma comment(linker, "/export:?get@BreakOnAllocationId@Heap@Details@Platform@@SAHXZ=wincorlib_orig.dll.?get@BreakOnAllocationId@Heap@Details@Platform@@SAHXZ,@244")
#pragma comment(linker, "/export:?get@BreakOnFreeId@Heap@Details@Platform@@SAHXZ=wincorlib_orig.dll.?get@BreakOnFreeId@Heap@Details@Platform@@SAHXZ,@245")
#pragma comment(linker, "/export:?get@CurrentAllocationId@Heap@Details@Platform@@SAHXZ=wincorlib_orig.dll.?get@CurrentAllocationId@Heap@Details@Platform@@SAHXZ,@246")
#pragma comment(linker, "/export:?get@Empty@Rect@Foundation@Windows@@SA?AV234@XZ=wincorlib_orig.dll.?get@Empty@Rect@Foundation@Windows@@SA?AV234@XZ,@247")
#pragma comment(linker, "/export:?get@Empty@Size@Foundation@Windows@@SA?AV234@XZ=wincorlib_orig.dll.?get@Empty@Size@Foundation@Windows@@SA?AV234@XZ,@248")
#pragma comment(linker, "/export:?get@FullName@Type@Platform@@QE$AAAPE$AAVString@3@XZ=wincorlib_orig.dll.?get@FullName@Type@Platform@@QE$AAAPE$AAVString@3@XZ,@249")
#pragma comment(linker, "/export:?get@HasInverse@Matrix3D@Media3D@Media@Xaml@UI@Windows@@QEAA_NXZ=wincorlib_orig.dll.?get@HasInverse@Matrix3D@Media3D@Media@Xaml@UI@Windows@@QEAA_NXZ,@250")
#pragma comment(linker, "/export:?get@Message@Exception@Platform@@QE$AAAPE$AAVString@3@XZ=wincorlib_orig.dll.?get@Message@Exception@Platform@@QE$AAAPE$AAVString@3@XZ,@251")
#pragma comment(linker, "/export:?get@ObjectCount@Heap@Details@Platform@@SAHXZ=wincorlib_orig.dll.?get@ObjectCount@Heap@Details@Platform@@SAHXZ,@252")
#pragma comment(linker, "/export:?get@Right@Rect@Foundation@Windows@@QEAAMXZ=wincorlib_orig.dll.?get@Right@Rect@Foundation@Windows@@QEAAMXZ,@253")
#pragma comment(linker, "/export:?get@TrackingLevel@Heap@Details@Platform@@SA?AW4HeapAllocationTrackingLevel@34@XZ=wincorlib_orig.dll.?get@TrackingLevel@Heap@Details@Platform@@SA?AW4HeapAllocationTrackingLevel@34@XZ,@254")
#pragma comment(linker, "/export:?set@BreakOnAllocationId@Heap@Details@Platform@@SAXH@Z=wincorlib_orig.dll.?set@BreakOnAllocationId@Heap@Details@Platform@@SAXH@Z,@255")
#pragma comment(linker, "/export:?set@BreakOnFreeId@Heap@Details@Platform@@SAXH@Z=wincorlib_orig.dll.?set@BreakOnFreeId@Heap@Details@Platform@@SAXH@Z,@256")
#pragma comment(linker, "/export:?set@TrackingLevel@Heap@Details@Platform@@SAXW4HeapAllocationTrackingLevel@34@@Z=wincorlib_orig.dll.?set@TrackingLevel@Heap@Details@Platform@@SAXW4HeapAllocationTrackingLevel@34@@Z,@257")
#endif

73
ep_startmenu/ep_sm_main.c Normal file
View File

@ -0,0 +1,73 @@
#include <Windows.h>
#include <valinet/hooking/iatpatch.h>
#include "ep_sm_forwards.h"
#pragma comment(lib, "Dbghelp.lib")
HMODULE hModule = NULL;
HMODULE hOrig = NULL;
wchar_t* (*pGetCmdArguments)(int*) = NULL;
SRWLOCK lockInstanced = { .Ptr = SRWLOCK_INIT };
BOOL bInstanced = FALSE;
BOOL start_GetProductInfo(DWORD dwOSMajorVersion, DWORD dwOSMinorVersion, DWORD dwSpMajorVersion, DWORD dwSpMinorVersion, PDWORD pdwReturnedProductType)
{
*pdwReturnedProductType = 119;
return TRUE;
}
void Init()
{
DWORD dwStartShowClassicMode = 0, dwSize = sizeof(DWORD);
RegGetValueW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced", L"Start_ShowClassicMode", RRF_RT_DWORD, NULL, &dwStartShowClassicMode, &dwSize);
if (dwStartShowClassicMode)
{
VnPatchIAT(GetModuleHandleW(NULL), "api-ms-win-core-sysinfo-l1-2-0.dll", "GetProductInfo", start_GetProductInfo);
}
HMODULE hMod;
GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, hModule, &hMod);
bInstanced = TRUE;
}
#pragma comment(linker, "/export:?GetCmdArguments@Details@Platform@@YAPEAPEA_WPEAH@Z=GetCmdArguments")
wchar_t* GetCmdArguments(int* a1)
{
AcquireSRWLockExclusive(&lockInstanced);
if (!hOrig)
{
hOrig = LoadLibraryW(L"wincorlib_orig.dll");
if (hOrig)
{
pGetCmdArguments = GetProcAddress(hOrig, "?GetCmdArguments@Details@Platform@@YAPEAPEA_WPEAH@Z");
}
}
if (pGetCmdArguments)
{
if (!bInstanced) Init();
ReleaseSRWLockExclusive(&lockInstanced);
return pGetCmdArguments(a1);
}
ReleaseSRWLockExclusive(&lockInstanced);
return NULL;
}
BOOL WINAPI DllMain(
_In_ HINSTANCE hinstDLL,
_In_ DWORD fdwReason,
_In_ LPVOID lpvReserved
)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hinstDLL);
hModule = hinstDLL;
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

View File

@ -0,0 +1,169 @@
<?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>
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{6bf03eea-200a-4698-9555-057dd52b0c78}</ProjectGuid>
<RootNamespace>epstartmenu</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</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>
<OutDir>$(SolutionDir)\build\$(Configuration)</OutDir>
<TargetName>$(ProjectName)</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)\build\$(Configuration)</OutDir>
<TargetName>$(ProjectName)</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)\build\$(Configuration)</OutDir>
<TargetName>$(ProjectName)</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)\build\$(Configuration)</OutDir>
<TargetName>$(ProjectName)</TargetName>
</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>
<AdditionalIncludeDirectories>$(SolutionDir)libs\libvalinet;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</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>
<AdditionalIncludeDirectories>$(SolutionDir)libs\libvalinet;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</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>
<AdditionalIncludeDirectories>$(SolutionDir)libs\libvalinet;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</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>
<AdditionalIncludeDirectories>$(SolutionDir)libs\libvalinet;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="ep_sm_forwards.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="ep_sm_main.c" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\ExplorerPatcher\ExplorerPatcher.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -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>
<ClInclude Include="ep_sm_forwards.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="ep_sm_main.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\ExplorerPatcher\ExplorerPatcher.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>