--- a\np2src\src\Notepad2.c Sat Nov 01 11:23:45 2008 +++ b\np2src\src\Notepad2.c Sat Nov 01 11:29:04 2008 @@ -308,8 +308,19 @@ int WINAPI WinMain(HINSTANCE hInstance,H LocalFree(lpMsgBuf); return(0); } + hModUxTheme = LoadLibrary(L"uxtheme.dll"); + + SciWrap_RegisterClasses(hInstance); + +#ifndef _WIN64 + // Disable the Wow64 file system redirection; ideally, this should happen + // before any file reads/writes are made, but after any LoadLibrary calls + // because we do want the Wow64 redirection when loading DLLs. + DisableWow64FsRedir(); +#endif + // Command Line, Ini File and Flags ParseCommandLine(); FindIniFile(); CreateIniFile(); @@ -337,12 +348,8 @@ int WINAPI WinMain(HINSTANCE hInstance,H SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX); msgTaskbarCreated = RegisterWindowMessage(L"TaskbarCreated"); - hModUxTheme = LoadLibrary(L"uxtheme.dll"); - - SciWrap_RegisterClasses(hInstance); - // Load Settings LoadSettings(); if (!InitApplication(hInstance)) @@ -379,8 +386,29 @@ int WINAPI WinMain(HINSTANCE hInstance,H return(msg.wParam); hPrevInst; +} + + +//============================================================================= +// +// DisableWow64FsRedir() +// +// +void DisableWow64FsRedir() +{ + typedef BOOL (WINAPI *PFNWOW64DISABLEWOW64FSREDIRECTION)( PVOID *OldValue ); + + PFNWOW64DISABLEWOW64FSREDIRECTION pfnWow64DisableWow64FsRedirection = + (PFNWOW64DISABLEWOW64FSREDIRECTION) + GetProcAddress(GetModuleHandle(TEXT("kernel32")), "Wow64DisableWow64FsRedirection"); + + if (pfnWow64DisableWow64FsRedirection) + { + PVOID pvOldValue; + pfnWow64DisableWow64FsRedirection(&pvOldValue); + } } //============================================================================= --- a\np2src\src\Notepad2.h Fri Oct 31 00:00:00 2008 +++ b\np2src\src\Notepad2.h Sat Nov 01 11:24:01 2008 @@ -82,8 +82,9 @@ typedef struct np2params { #define WM_TRAYMESSAGE WM_USER //==== Function Declarations ================================================== +void DisableWow64FsRedir(); BOOL InitApplication(HINSTANCE); HWND InitInstance(HINSTANCE,LPSTR,int); BOOL ActivatePrevInst(); void ShowNotifyIcon(HWND,BOOL);