From 030920821494ea451da29f3cdde41c5b4cc9abaf Mon Sep 17 00:00:00 2001 From: Sven Strickroth Date: Mon, 31 Dec 2012 04:21:47 +0100 Subject: [PATCH] Use AtlLoadSystemLibraryUsingFullPath instead of LoadLibrary for system libraries Inspired by TortoiseSVN revision 22980. Signed-off-by: Sven Strickroth --- src/SshAskPass/SshAskPass.cpp | 3 ++- src/TortoiseProc/AppUtils.cpp | 2 +- src/TortoiseProc/CheckForUpdatesDlg.cpp | 2 +- src/TortoiseProc/GitProgressDlg.cpp | 2 +- src/TortoiseProc/ImportPatchDlg.cpp | 2 +- src/TortoiseProc/LogDlg.cpp | 2 +- src/TortoiseProc/ProgressDlg.cpp | 2 +- src/TortoiseProc/RebaseDlg.cpp | 2 +- src/TortoiseProc/SyncDlg.cpp | 2 +- src/TortoiseShell/ItemIDList.cpp | 2 +- src/Utils/JumpListHelpers.cpp | 4 ++-- src/Utils/Libraries.cpp | 4 ++-- src/Utils/MailMsg.cpp | 2 +- src/Utils/MiscUI/MessageBox.cpp | 4 ++-- src/Utils/MiscUI/Picture.cpp | 3 ++- src/Utils/TaskbarUUID.cpp | 5 +++-- 16 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/SshAskPass/SshAskPass.cpp b/src/SshAskPass/SshAskPass.cpp index 7aad60482..b070efaec 100644 --- a/src/SshAskPass/SshAskPass.cpp +++ b/src/SshAskPass/SshAskPass.cpp @@ -25,6 +25,7 @@ #include #include "propsys.h" #include "PropKey.h" +#include #pragma comment(linker, "\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") @@ -102,7 +103,7 @@ void MarkWindowAsUnpinnable(HWND hWnd) { typedef HRESULT (WINAPI *SHGPSFW) (HWND hwnd,REFIID riid,void** ppv); - HMODULE hShell = LoadLibrary(_T("Shell32.dll")); + HMODULE hShell = AtlLoadSystemLibraryUsingFullPath(_T("Shell32.dll")); if (hShell) { SHGPSFW pfnSHGPSFW = (SHGPSFW)::GetProcAddress(hShell, "SHGetPropertyStoreForWindow"); diff --git a/src/TortoiseProc/AppUtils.cpp b/src/TortoiseProc/AppUtils.cpp index f533e9730..251d90d9d 100644 --- a/src/TortoiseProc/AppUtils.cpp +++ b/src/TortoiseProc/AppUtils.cpp @@ -2852,7 +2852,7 @@ void CAppUtils::MarkWindowAsUnpinnable(HWND hWnd) { typedef HRESULT (WINAPI *SHGPSFW) (HWND hwnd,REFIID riid,void** ppv); - CAutoLibrary hShell = LoadLibrary(_T("Shell32.dll")); + CAutoLibrary hShell = AtlLoadSystemLibraryUsingFullPath(_T("Shell32.dll")); if (hShell.IsValid()) { SHGPSFW pfnSHGPSFW = (SHGPSFW)::GetProcAddress(hShell, "SHGetPropertyStoreForWindow"); diff --git a/src/TortoiseProc/CheckForUpdatesDlg.cpp b/src/TortoiseProc/CheckForUpdatesDlg.cpp index c3a3d8396..ad67c7bcd 100644 --- a/src/TortoiseProc/CheckForUpdatesDlg.cpp +++ b/src/TortoiseProc/CheckForUpdatesDlg.cpp @@ -667,7 +667,7 @@ CString CCheckForUpdatesDlg::GetDownloadsDirectory() if (SysInfo::Instance().IsVistaOrLater()) { - CAutoLibrary hShell = ::LoadLibrary(_T("shell32.dll")); + CAutoLibrary hShell = AtlLoadSystemLibraryUsingFullPath(_T("shell32.dll")); if (hShell) { typedef HRESULT STDAPICALLTYPE SHGetKnownFolderPathFN(__in REFKNOWNFOLDERID rfid, __in DWORD dwFlags, __in_opt HANDLE hToken, __deref_out PWSTR *ppszPath); diff --git a/src/TortoiseProc/GitProgressDlg.cpp b/src/TortoiseProc/GitProgressDlg.cpp index 186824497..dfbfa2a0d 100644 --- a/src/TortoiseProc/GitProgressDlg.cpp +++ b/src/TortoiseProc/GitProgressDlg.cpp @@ -758,7 +758,7 @@ BOOL CGitProgressDlg::OnInitDialog() // not elevated, this is a no-op. CHANGEFILTERSTRUCT cfs = { sizeof(CHANGEFILTERSTRUCT) }; typedef BOOL STDAPICALLTYPE ChangeWindowMessageFilterExDFN(HWND hWnd, UINT message, DWORD action, PCHANGEFILTERSTRUCT pChangeFilterStruct); - CAutoLibrary hUser = ::LoadLibrary(_T("user32.dll")); + CAutoLibrary hUser = AtlLoadSystemLibraryUsingFullPath(_T("user32.dll")); if (hUser) { ChangeWindowMessageFilterExDFN *pfnChangeWindowMessageFilterEx = (ChangeWindowMessageFilterExDFN*)GetProcAddress(hUser, "ChangeWindowMessageFilterEx"); diff --git a/src/TortoiseProc/ImportPatchDlg.cpp b/src/TortoiseProc/ImportPatchDlg.cpp index 5b8531168..0fe353b29 100644 --- a/src/TortoiseProc/ImportPatchDlg.cpp +++ b/src/TortoiseProc/ImportPatchDlg.cpp @@ -108,7 +108,7 @@ BOOL CImportPatchDlg::OnInitDialog() // not elevated, this is a no-op. CHANGEFILTERSTRUCT cfs = { sizeof(CHANGEFILTERSTRUCT) }; typedef BOOL STDAPICALLTYPE ChangeWindowMessageFilterExDFN(HWND hWnd, UINT message, DWORD action, PCHANGEFILTERSTRUCT pChangeFilterStruct); - CAutoLibrary hUser = ::LoadLibrary(_T("user32.dll")); + CAutoLibrary hUser = AtlLoadSystemLibraryUsingFullPath(_T("user32.dll")); if (hUser) { ChangeWindowMessageFilterExDFN *pfnChangeWindowMessageFilterEx = (ChangeWindowMessageFilterExDFN*)GetProcAddress(hUser, "ChangeWindowMessageFilterEx"); diff --git a/src/TortoiseProc/LogDlg.cpp b/src/TortoiseProc/LogDlg.cpp index 3c3d5a68d..0e3d7bcdf 100644 --- a/src/TortoiseProc/LogDlg.cpp +++ b/src/TortoiseProc/LogDlg.cpp @@ -219,7 +219,7 @@ BOOL CLogDlg::OnInitDialog() // not elevated, this is a no-op. CHANGEFILTERSTRUCT cfs = { sizeof(CHANGEFILTERSTRUCT) }; typedef BOOL STDAPICALLTYPE ChangeWindowMessageFilterExDFN(HWND hWnd, UINT message, DWORD action, PCHANGEFILTERSTRUCT pChangeFilterStruct); - CAutoLibrary hUser = ::LoadLibrary(_T("user32.dll")); + CAutoLibrary hUser = AtlLoadSystemLibraryUsingFullPath(_T("user32.dll")); if (hUser) { ChangeWindowMessageFilterExDFN *pfnChangeWindowMessageFilterEx = (ChangeWindowMessageFilterExDFN*)GetProcAddress(hUser, "ChangeWindowMessageFilterEx"); diff --git a/src/TortoiseProc/ProgressDlg.cpp b/src/TortoiseProc/ProgressDlg.cpp index a3ef99b4a..953d8fa82 100644 --- a/src/TortoiseProc/ProgressDlg.cpp +++ b/src/TortoiseProc/ProgressDlg.cpp @@ -84,7 +84,7 @@ BOOL CProgressDlg::OnInitDialog() // not elevated, this is a no-op. CHANGEFILTERSTRUCT cfs = { sizeof(CHANGEFILTERSTRUCT) }; typedef BOOL STDAPICALLTYPE ChangeWindowMessageFilterExDFN(HWND hWnd, UINT message, DWORD action, PCHANGEFILTERSTRUCT pChangeFilterStruct); - CAutoLibrary hUser = ::LoadLibrary(_T("user32.dll")); + CAutoLibrary hUser = AtlLoadSystemLibraryUsingFullPath(_T("user32.dll")); if (hUser) { ChangeWindowMessageFilterExDFN *pfnChangeWindowMessageFilterEx = (ChangeWindowMessageFilterExDFN*)GetProcAddress(hUser, "ChangeWindowMessageFilterEx"); diff --git a/src/TortoiseProc/RebaseDlg.cpp b/src/TortoiseProc/RebaseDlg.cpp index f4119e0af..f0004e8a4 100644 --- a/src/TortoiseProc/RebaseDlg.cpp +++ b/src/TortoiseProc/RebaseDlg.cpp @@ -134,7 +134,7 @@ BOOL CRebaseDlg::OnInitDialog() // not elevated, this is a no-op. CHANGEFILTERSTRUCT cfs = { sizeof(CHANGEFILTERSTRUCT) }; typedef BOOL STDAPICALLTYPE ChangeWindowMessageFilterExDFN(HWND hWnd, UINT message, DWORD action, PCHANGEFILTERSTRUCT pChangeFilterStruct); - CAutoLibrary hUser = ::LoadLibrary(_T("user32.dll")); + CAutoLibrary hUser = AtlLoadSystemLibraryUsingFullPath(_T("user32.dll")); if (hUser) { ChangeWindowMessageFilterExDFN *pfnChangeWindowMessageFilterEx = (ChangeWindowMessageFilterExDFN*)GetProcAddress(hUser, "ChangeWindowMessageFilterEx"); diff --git a/src/TortoiseProc/SyncDlg.cpp b/src/TortoiseProc/SyncDlg.cpp index 2a1cd4dc6..8720894ff 100644 --- a/src/TortoiseProc/SyncDlg.cpp +++ b/src/TortoiseProc/SyncDlg.cpp @@ -602,7 +602,7 @@ BOOL CSyncDlg::OnInitDialog() // not elevated, this is a no-op. CHANGEFILTERSTRUCT cfs = { sizeof(CHANGEFILTERSTRUCT) }; typedef BOOL STDAPICALLTYPE ChangeWindowMessageFilterExDFN(HWND hWnd, UINT message, DWORD action, PCHANGEFILTERSTRUCT pChangeFilterStruct); - CAutoLibrary hUser = ::LoadLibrary(_T("user32.dll")); + CAutoLibrary hUser = AtlLoadSystemLibraryUsingFullPath(_T("user32.dll")); if (hUser) { ChangeWindowMessageFilterExDFN *pfnChangeWindowMessageFilterEx = (ChangeWindowMessageFilterExDFN*)GetProcAddress(hUser, "ChangeWindowMessageFilterEx"); diff --git a/src/TortoiseShell/ItemIDList.cpp b/src/TortoiseShell/ItemIDList.cpp index 183c264c6..1a8557f9a 100644 --- a/src/TortoiseShell/ItemIDList.cpp +++ b/src/TortoiseShell/ItemIDList.cpp @@ -128,7 +128,7 @@ stdstring ItemIDList::toString(bool resolveLibraries /*= true*/) if (SUCCEEDED(hr)) { typedef HRESULT STDAPICALLTYPE SHCreateItemFromParsingNameFN(__in PCWSTR pszPath, __in_opt IBindCtx *pbc, __in REFIID riid, __deref_out void **ppv); - CAutoLibrary hShell = ::LoadLibrary(_T("shell32.dll")); + CAutoLibrary hShell = AtlLoadSystemLibraryUsingFullPath(_T("shell32.dll")); if (hShell) { SHCreateItemFromParsingNameFN *pfnSHCreateItemFromParsingName = (SHCreateItemFromParsingNameFN*)GetProcAddress(hShell, "SHCreateItemFromParsingName"); diff --git a/src/Utils/JumpListHelpers.cpp b/src/Utils/JumpListHelpers.cpp index 4c5b2abb2..043e89c27 100644 --- a/src/Utils/JumpListHelpers.cpp +++ b/src/Utils/JumpListHelpers.cpp @@ -1,6 +1,6 @@ // TortoiseGit - a Windows shell extension for easy version control -// Copyright (C) 2009-2011 - TortoiseSVN +// Copyright (C) 2009-2012 - TortoiseSVN // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -26,7 +26,7 @@ HRESULT SetAppID(LPCTSTR appID) { HRESULT hRes = S_FALSE; typedef HRESULT STDAPICALLTYPE SetCurrentProcessExplicitAppUserModelIDFN(PCWSTR AppID); - CAutoLibrary hShell = ::LoadLibrary(_T("shell32.dll")); + CAutoLibrary hShell = AtlLoadSystemLibraryUsingFullPath(_T("shell32.dll")); if (hShell) { SetCurrentProcessExplicitAppUserModelIDFN *pfnSetCurrentProcessExplicitAppUserModelID = (SetCurrentProcessExplicitAppUserModelIDFN*)GetProcAddress(hShell, "SetCurrentProcessExplicitAppUserModelID"); diff --git a/src/Utils/Libraries.cpp b/src/Utils/Libraries.cpp index d70e0a088..1330f55db 100644 --- a/src/Utils/Libraries.cpp +++ b/src/Utils/Libraries.cpp @@ -1,6 +1,6 @@ // TortoiseGit - a Windows shell extension for easy version control -// Copyright (C) 2010-2011 - TortoiseSVN +// Copyright (C) 2010-2012 - TortoiseSVN // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -142,7 +142,7 @@ HRESULT GetShellLibraryItem(LPWSTR pwszLibraryName, IShellItem2** ppShellItem) swprintf_s(wszRealLibraryName, L"%s%s", pwszLibraryName, L".library-ms"); typedef HRESULT STDAPICALLTYPE SHCreateItemInKnownFolderFN(REFKNOWNFOLDERID kfid, DWORD dwKFFlags, __in_opt PCWSTR pszItem, REFIID riid, __deref_out void **ppv); - CAutoLibrary hShell = ::LoadLibrary(_T("shell32.dll")); + CAutoLibrary hShell = AtlLoadSystemLibraryUsingFullPath(_T("shell32.dll")); if (hShell) { SHCreateItemInKnownFolderFN *pfnSHCreateItemInKnownFolder = (SHCreateItemInKnownFolderFN*)GetProcAddress(hShell, "SHCreateItemInKnownFolder"); diff --git a/src/Utils/MailMsg.cpp b/src/Utils/MailMsg.cpp index 5ae743ae4..14b8cd5ac 100644 --- a/src/Utils/MailMsg.cpp +++ b/src/Utils/MailMsg.cpp @@ -177,7 +177,7 @@ BOOL CMailMsg::MAPIInitialize() // Load MAPI.dll - m_hMapi = ::LoadLibrary(_T("mapi32.dll")); + m_hMapi = AtlLoadSystemLibraryUsingFullPath(_T("mapi32.dll")); if (!m_hMapi) { m_sErrorMsg = _T("Error loading mapi32.dll"); diff --git a/src/Utils/MiscUI/MessageBox.cpp b/src/Utils/MiscUI/MessageBox.cpp index e46896b83..e9cc58935 100644 --- a/src/Utils/MiscUI/MessageBox.cpp +++ b/src/Utils/MiscUI/MessageBox.cpp @@ -709,7 +709,7 @@ void CMessageBox::OnButton2() { typedef HWND (WINAPI* FPHH)(HWND, LPCWSTR, UINT, DWORD); FPHH pHtmlHelp=NULL; // Function pointer - HINSTANCE hInstHtmlHelp = LoadLibrary(_T("HHCtrl.ocx")); + HINSTANCE hInstHtmlHelp = AtlLoadSystemLibraryUsingFullPath(_T("HHCtrl.ocx")); HWND hHelp = NULL; if (hInstHtmlHelp != NULL) { @@ -736,7 +736,7 @@ void CMessageBox::OnButton3() { typedef HWND (WINAPI* FPHH)(HWND, LPCWSTR, UINT, DWORD); FPHH pHtmlHelp=NULL; // Function pointer - HINSTANCE hInstHtmlHelp = LoadLibrary(_T("HHCtrl.ocx")); + HINSTANCE hInstHtmlHelp = AtlLoadSystemLibraryUsingFullPath(_T("HHCtrl.ocx")); HWND hHelp = NULL; if (hInstHtmlHelp != NULL) { diff --git a/src/Utils/MiscUI/Picture.cpp b/src/Utils/MiscUI/Picture.cpp index 5431ab451..bfd860ff8 100644 --- a/src/Utils/MiscUI/Picture.cpp +++ b/src/Utils/MiscUI/Picture.cpp @@ -23,6 +23,7 @@ #include #include "Picture.h" #include "SmartHandle.h" +#include #pragma comment(lib, "shlwapi.lib") #pragma comment(lib, "gdiplus.lib") @@ -126,7 +127,7 @@ bool CPicture::Load(tstring sFilePathName) return true; // Load & initialize the GDI+ library if available - HMODULE hGdiPlusLib = LoadLibrary(_T("gdiplus.dll")); + HMODULE hGdiPlusLib = AtlLoadSystemLibraryUsingFullPath(_T("gdiplus.dll")); if (hGdiPlusLib && GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL) == Ok) { bHaveGDIPlus = true; diff --git a/src/Utils/TaskbarUUID.cpp b/src/Utils/TaskbarUUID.cpp index 197cc5b27..d1640280c 100644 --- a/src/Utils/TaskbarUUID.cpp +++ b/src/Utils/TaskbarUUID.cpp @@ -1,6 +1,6 @@ // TortoiseGit - a Windows shell extension for easy version control -// Copyright (C) 2011 - TortoiseSVN +// Copyright (C) 2011-2012 - TortoiseSVN // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -25,6 +25,7 @@ #include #include "Win7.h" #include "SmartHandle.h" +#include #define APPID (_T("TGIT.TGIT.1")) @@ -32,7 +33,7 @@ void SetTaskIDPerUUID() { typedef HRESULT STDAPICALLTYPE SetCurrentProcessExplicitAppUserModelIDFN(PCWSTR AppID); - CAutoLibrary hShell = ::LoadLibrary(_T("shell32.dll")); + CAutoLibrary hShell = AtlLoadSystemLibraryUsingFullPath(_T("shell32.dll")); if (hShell) { SetCurrentProcessExplicitAppUserModelIDFN *pfnSetCurrentProcessExplicitAppUserModelID = (SetCurrentProcessExplicitAppUserModelIDFN*)GetProcAddress(hShell, "SetCurrentProcessExplicitAppUserModelID"); -- 2.11.4.GIT