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) 2001 Microsoft Corporation
Module Name: EncartaEncyclopediaDeluxe2K.cpp
Abstract:
This shim fixes a problem with Encarta Encyclopedia Deluxe 2000.
Notes:
This is an app specific shim.
History:
01/04/2001 a-brienw Created
--*/
#include "precomp.h"
IMPLEMENT_SHIM_BEGIN(EncartaEncyclopediaDeluxe2K) #include "ShimHookMacro.h"
APIHOOK_ENUM_BEGIN APIHOOK_ENUM_ENTRY(WinExec) APIHOOK_ENUM_END
/*++
Hook WinExec to see if Encarta is calling for MSINFO32. If so then direct it to the version that comes with the OS.
--*/
UINT APIHOOK(WinExec)( LPSTR lpCmdLine, // command line
UINT uCmdShow // window style
) { CSTRING_TRY { CString csCmdLine(lpCmdLine); int nMsinfoIndex = csCmdLine.Find(L"MSINFO32.EXE"); if (nMsinfoIndex) { CString csCmdLine; SHGetSpecialFolderPathW(csCmdLine, CSIDL_PROGRAM_FILES_COMMON); csCmdLine += L"\\Microsoft Shared\\MSInfo\\msinfo32.exe";
// Test for existance of the corrected path of msinfo32.exe
HANDLE hFile = CreateFileW(csCmdLine, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if( hFile != INVALID_HANDLE_VALUE ) { CloseHandle( hFile );
return ORIGINAL_API(WinExec)(csCmdLine.GetAnsi(), uCmdShow); } } } CSTRING_CATCH { // Do nothing
}
return ORIGINAL_API(WinExec)(lpCmdLine, uCmdShow); }
/*++
Register hooked functions
--*/
HOOK_BEGIN APIHOOK_ENTRY(KERNEL32.DLL, WinExec)
HOOK_END
IMPLEMENT_SHIM_END
|