Index: src/chext/DropMenuExt.cpp
===================================================================
diff -u -N -rebc7fabbd2d59f9a0f723ea480b5374cc393ec12 -r2f696d06139af4d0fab14dd1613507b66f5169cb
--- src/chext/DropMenuExt.cpp	(.../DropMenuExt.cpp)	(revision ebc7fabbd2d59f9a0f723ea480b5374cc393ec12)
+++ src/chext/DropMenuExt.cpp	(.../DropMenuExt.cpp)	(revision 2f696d06139af4d0fab14dd1613507b66f5169cb)
@@ -79,7 +79,7 @@
 	if(hWnd == nullptr)
 		return E_FAIL;
 
-	HRESULT hResult = ReadShellConfig();
+	HRESULT hResult = ShellExtensionVerifier::ReadShellConfig(m_piShellExtControl, m_tShellExtMenuConfig, eLocation_DragAndDropMenu);
 	LOG_HRESULT(m_spLog, hResult) << L"Read shell config";
 	if(SUCCEEDED(hResult))
 	{
@@ -216,40 +216,3 @@
 	ATLTRACE(_T("CDropMenuExt::HandleMenuMsg2(): uMsg = %lu, wParam = %lu, lParam = %lu\n"), uMsg, wParam, lParam);
 	return S_FALSE;
 }
-
-HRESULT CDropMenuExt::ReadShellConfig()
-{
-	try
-	{
-		HWND hWnd = ShellExtensionVerifier::VerifyShellExt(m_piShellExtControl);
-		if(hWnd == nullptr)
-			return E_FAIL;
-
-		// get cfg from ch
-		unsigned long ulSHMID = GetTickCount();
-		if(::SendMessage(hWnd, WM_GETCONFIG, eLocation_DragAndDropMenu, ulSHMID) != TRUE)
-		{
-			LOG_ERROR(m_spLog) << L"Failed to retrieve configuration from Copy Handler";
-			return E_FAIL;
-		}
-
-		std::wstring strSHMName = IPCSupport::GenerateSHMName(ulSHMID);
-
-		chcore::TSharedMemory tSharedMemory;
-		chcore::TString wstrData;
-		chcore::TConfig cfgShellExtData;
-
-		tSharedMemory.Open(strSHMName.c_str());
-		tSharedMemory.Read(wstrData);
-
-		cfgShellExtData.ReadFromString(wstrData);
-
-		m_tShellExtMenuConfig.ReadFromConfig(cfgShellExtData, _T("ShellExtCfg"));
-
-		return S_OK;
-	}
-	catch(...)
-	{
-		return E_FAIL;
-	}
-}