2025-04-27 07:49:33 -04:00

120 lines
2.7 KiB
C++

//=======================================================================
//
// Copyright (C) Microsoft Corporation, 1998 - 1999 All Rights Reserved.
//
// File: WUpdMgr.cpp
//
// Description:
// Executable launched from the Windows Update shortcut.
//
//=======================================================================
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include <wininet.h> //INTERNET_MAX_URL_LENGTH
#include <shellapi.h>
#include <objbase.h>
#include <shlobj.h>
#include "sysinfo.h"
#include "msg.h"
#include <atlbase.h>
#include <atlconv.cpp>
// Definitions
const TCHAR DEFAULT_WINUPD_LOCAL_FILE[] = _T("wum.htm");
const TCHAR HELPCENTER_WINUPD_URL[] = _T("hcp://system/updatectr/updatecenter.htm");
/////////////////////////////////////////////////////////////////////////////
// vShowMessageBox
// Display an error in a message box.
//
// Parameters:
//
// Comments :
/////////////////////////////////////////////////////////////////////////////
void vShowMessageBox(DWORD dwMessageId)
{
LPTSTR tszMsg;
DWORD dwResult =
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_HMODULE,
NULL,
dwMessageId,
0,
(LPTSTR)&tszMsg,
0,
NULL);
// if we can't get the message, we don't do anything.
if ( dwResult != 0 )
{
MessageBox(NULL,
tszMsg,
NULL,
MB_OK | MB_ICONEXCLAMATION);
LocalFree(tszMsg);
}
}
/////////////////////////////////////////////////////////////////////////////
// main
// Entry point.
//
// Parameters:
//
// Comments :
/////////////////////////////////////////////////////////////////////////////
int __cdecl main(int argc, char **argv)
{
int nReturn = 0;
if ( FWinUpdDisabled() )
{
vShowMessageBox(WU_E_DISABLED);
nReturn = 1;
}
else
{
bool fConnected;
TCHAR tszURL[INTERNET_MAX_URL_LENGTH];
// Determine if the internet connection wizard has run and we are
// connected to the Internet
HrGetConnectionStatus(&fConnected);
if ( fConnected )
{ // The user has an internet connection.
lstrcpy(tszURL, WINDOWS_UPDATE_URL);
// no we need to check registry override
HKEY hkey;
if (NO_ERROR == RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\WindowsUpdate"), 0, KEY_READ, &hkey))
{
DWORD dwSize = sizeof(tszURL);
RegQueryValueEx(hkey, _T("URL"), 0, 0, (LPBYTE)&tszURL, &dwSize);
RegCloseKey(hkey);
}
// Launch IE to go to the site
vLaunchIE(tszURL);
}
else
{
//launch helpcenter version of WU
ShellExecute(NULL, NULL, HELPCENTER_WINUPD_URL, NULL, NULL, SW_SHOWNORMAL);
}
}
return nReturn;
}