Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 2002 Microsoft Corporation
Module Name:
Outlook98Wizard.cpp
Abstract:
This DLL hooks VerQueryValue, and will return English Language information for Japanese outlook 98 setup file.
Notes:
This is an app specific shim.
History:
01/21/2002 v-rbabu Created
--*/
#include "precomp.h"
#include "string.h"
IMPLEMENT_SHIM_BEGIN(Outlook98Wizard) #include "ShimHookMacro.h"
APIHOOK_ENUM_BEGIN APIHOOK_ENUM_ENTRY(VerQueryValueA) APIHOOK_ENUM_END
/*++
The actual problem is, the outlook 98 setup is comparing the language informations of the Shell32.dll and the setup file (outlwzd.exe). But according to the bug scenario, the system is having English OS and Japanese Locale. So, Shell32.dll have English language as its language. So, this differs with the Language informaiton of Japanese Outlook setuip file.
So, setup thorows an error that the Language of the outlook 98 going to be installed differs with the system language.
This stub function lie about the language information of the outlook setup file. Though the setup file is Japanese as language informaiton, this shim returns as if it is English.
--*/
BOOL APIHOOK(VerQueryValueA)( const LPVOID pBlock, LPSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen ) { BOOL bRet = ORIGINAL_API(VerQueryValueA)(pBlock, lpSubBlock, lplpBuffer, puLen); if (bRet) { CSTRING_TRY { //
// If trying to get the \VarFileInfo\Translation, then assign English
// Language information to the output buffer.
//
CString csSubBlockString(lpSubBlock);
if (lplpBuffer && (csSubBlockString.Find(L"\\VarFileInfo\\Translation") != -1)) { // Adjust the version info
LOGN(eDbgLevelInfo, "[VerQueryValueA] Return modified version info"); *lplpBuffer = L"03a40409"; } } CSTRING_CATCH { // Do nothing
} }
return bRet; }
/*++
Register hooked functions
--*/
HOOK_BEGIN APIHOOK_ENTRY(VERSION.DLL, VerQueryValueA) HOOK_END
IMPLEMENT_SHIM_END
|