windows-nt/Source/XPSP1/NT/windows/appcompat/shims/specific/cuseeme4.cpp
2020-09-26 16:20:57 +08:00

112 lines
2.9 KiB
C++

/*
Copyright (c) 2000 Microsoft Corporation
Module Name:
CUSeeMe4.cpp
Abstract:
This DLL fixes a profiles bug in CU-SeeMe Pro 4.0 setup where it only adds some certain
Reg values to the per-user hive (HKCU) instead of putting them in HKLM.
We don't actually hook any functions, instead, we just copy the regkeys after setup finishes
when our process detach is called.
Notes:
History:
08/07/2000 reinerf Created
11/29/2000 andyseti Renamed file from setup.cpp into CUSeeMe4.cpp.
Converted into AppSpecific shim.
*/
#include "precomp.h"
IMPLEMENT_SHIM_BEGIN(CUSeeMe4)
#include "ShimHookMacro.h"
APIHOOK_ENUM_BEGIN
APIHOOK_ENUM_END
BOOL
NOTIFY_FUNCTION(
DWORD fdwReason)
{
if (fdwReason == DLL_PROCESS_DETACH)
{
HKEY hkCU;
HKEY hkLM;
if ((RegOpenKeyExA(HKEY_CURRENT_USER,
"Software\\White Pine\\CU-SeeMe Pro\\4.0\\Installer",
0,
KEY_QUERY_VALUE,
&hkCU) == ERROR_SUCCESS))
{
if (RegOpenKeyExA(HKEY_LOCAL_MACHINE,
"Software\\White Pine\\CU-SeeMe Pro\\4.0\\Installer",
0,
KEY_SET_VALUE,
&hkLM) == ERROR_SUCCESS)
{
// these are the values we want to migrate
static char* aszValues[] = {"Folder",
"Serial",
"Help",
0,
};
char** ppszValue = aszValues;
LOGN( eDbgLevelError,
"Copying values from 'HKCU\\Software\\White Pine\\CU-SeeMe Pro\\4.0\\Installer' into"
"'HKLM\\Software\\White Pine\\CU-SeeMe Pro\\4.0\\Installer'.");
while (*ppszValue)
{
DWORD dwType;
DWORD cbData;
char szData[MAX_PATH];
cbData = sizeof(szData);
if (RegQueryValueExA(hkCU,
*ppszValue,
NULL,
&dwType,
(LPBYTE)&szData,
&cbData) == ERROR_SUCCESS)
{
RegSetValueExA(hkLM, *ppszValue, 0, dwType, (LPBYTE)&szData, cbData);
}
// get the next value to migrate from hkcu -> hklm
ppszValue++;
}
RegCloseKey(hkLM);
}
RegCloseKey(hkCU);
}
}
return TRUE;
}
/*++
Register hooked functions
--*/
HOOK_BEGIN
CALL_NOTIFY_FUNCTION
HOOK_END
IMPLEMENT_SHIM_END