windows-nt/Source/XPSP1/NT/base/ntsetup/win95upg/migdlls/setup/progacc.c
2020-09-26 16:20:57 +08:00

176 lines
3.7 KiB
C

/*++
Copyright (c) 2002 Microsoft Corporation
Module Name:
progacc.c
Abstract:
This source file implements the operations needed to properly migrate
program access settings for OE access.
Author:
Tim Noonan (tnoonan) 17-Jul-2002
Revision History:
--*/
#include "pch.h"
#define S_OE_FILE "MSIMN.EXE"
#define S_MAIL_KEY "HKLM\\Software\\Clients\\Mail"
#define S_OUTLOOK_EXPRESS "Outlook Express"
#define S_IMN "Internet Mail and News"
static GROWBUFFER g_FilesBuff = GROWBUF_INIT;
BOOL
ProgramAccess_Attach (
IN HINSTANCE DllInstance
)
{
return TRUE;
}
BOOL
ProgramAccess_Detach (
IN HINSTANCE DllInstance
)
{
FreeGrowBuffer(&g_FilesBuff);
return TRUE;
}
LONG
ProgramAccess_QueryVersion (
IN PCSTR *ExeNamesBuf
)
{
MultiSzAppendA (&g_FilesBuff, S_OE_FILE);
*ExeNamesBuf = g_FilesBuff.Buf;
return ERROR_SUCCESS;
}
LONG
ProgramAccess_Initialize9x (
IN PCSTR WorkingDirectory,
IN PCSTR SourceDirectories
)
{
return ERROR_SUCCESS;
}
LONG
ProgramAccess_MigrateUser9x (
IN HWND ParentWnd,
IN PCSTR UnattendFile,
IN HKEY UserRegKey,
IN PCSTR UserName
)
{
return ERROR_SUCCESS;
}
LONG
ProgramAccess_MigrateSystem9x (
IN HWND ParentWnd,
IN PCSTR UnattendFile
)
{
CHAR OEAccess[MAX_PATH];
DWORD cch = GetPrivateProfileStringA("Components",
"OEAccess",
"",
OEAccess,
ARRAYSIZE(OEAccess),
UnattendFile);
if ((cch > 0) && StringIMatchA(OEAccess, "off"))
{
HKEY key;
DEBUGMSGA((DBG_VERBOSE, "ProgramAccess: OEAccess is off."));
key = OpenRegKeyStrA(S_MAIL_KEY);
if (NULL != key)
{
PCTSTR currentClient = GetRegValueStringA(key, "");
if (NULL != currentClient)
{
if (StringIMatchA(currentClient, S_OUTLOOK_EXPRESS) ||
StringIMatchA(currentClient, S_IMN))
{
DEBUGMSGA((DBG_VERBOSE, "ProgramAccess: OE was the default client and we are marking the key as handled."));
WritePrivateProfileStringA(S_HANDLED,
S_MAIL_KEY,
"Registry",
g_MigrateInfPath);
}
else
{
DEBUGMSGA ((DBG_VERBOSE, "ProgramAccess: OE was not the default client."));
}
MemFree(g_hHeap, 0, currentClient);
}
else
{
DEBUGMSGA ((DBG_VERBOSE, "ProgramAccess: Error getting current client or no default client."));
}
CloseRegKey(key);
}
else
{
DEBUGMSGA ((DBG_VERBOSE, "ProgramAccess: Error opening " S_MAIL_KEY "."));
}
}
else
{
DEBUGMSGA ((DBG_VERBOSE, "ProgramAccess: OEAccess is on -- not messing with default client."));
}
return ERROR_SUCCESS;
}
LONG
ProgramAccess_InitializeNT (
IN PCWSTR WorkingDirectory,
IN PCWSTR SourceDirectories
)
{
return ERROR_SUCCESS;
}
LONG
ProgramAccess_MigrateUserNT (
IN HINF UnattendFile,
IN HKEY UserRegKey,
IN PCWSTR UserName
)
{
return ERROR_SUCCESS;
}
LONG
ProgramAccess_MigrateSystemNT (
IN HINF UnattendFile
)
{
return ERROR_SUCCESS;
}