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) 2000 Microsoft Corporation
Module Name:
CorrectFilePathInSetDlgItemText.cpp
Abstract:
This is an general purpose shim that watches the calls to SetDlgItemText and looks for paths. If found it corrects the path. History:
12/21/2000 a-brienw Created
--*/
#include "precomp.h"
#include "ShimHook.h"
IMPLEMENT_SHIM_BEGIN(CorrectFilePathInSetDlgItemText) #include "ShimHookMacro.h"
APIHOOK_ENUM_BEGIN APIHOOK_ENUM_ENTRY(SetDlgItemTextA) APIHOOK_ENUM_END
/*
Look for incorrect system directory path being put into a dialog box item and replace it with the correct system directory path.
*/
BOOL APIHOOK(SetDlgItemTextA)( HWND hWnd, // handle to window
int nIDDlgItem, // control identifier
LPCSTR lpString // text to set
) { if( lpString != NULL) { CSTRING_TRY { CString csText(lpString); if (csText.CompareNoCase(L"c:\\windows\\system\\") == 0 ) { CString csWinDir; csWinDir.GetSystemDirectory(); csText.Replace(L"c:\\windows\\system\\", csWinDir);
LOGN( eDbgLevelWarning, "SetDlgItemTextA converted lpString from \"%s\" to \"%S\".", lpString, csText.Get());
return SetDlgItemTextA(hWnd, nIDDlgItem, csText.GetAnsi()); } } CSTRING_CATCH { // Do nothing
} }
return ORIGINAL_API(SetDlgItemTextA)(hWnd, nIDDlgItem, lpString); }
/*++
Register hooked functions
--*/
HOOK_BEGIN
APIHOOK_ENTRY(USER32.DLL, SetDlgItemTextA)
HOOK_END
IMPLEMENT_SHIM_END
|