176 lines
3.7 KiB
C
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;
|
||
|
}
|
||
|
|