You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
238 lines
4.9 KiB
238 lines
4.9 KiB
/*++
|
|
|
|
Copyright (c) 2001 Microsoft Corporation
|
|
|
|
Module Name :
|
|
|
|
updurls2.cpp
|
|
|
|
Abstract:
|
|
|
|
The main for the Project
|
|
|
|
Author:
|
|
|
|
Christopher Achille (cachille)
|
|
|
|
Project:
|
|
|
|
URLScan Update
|
|
|
|
Revision History:
|
|
|
|
March 2002: Created
|
|
|
|
--*/
|
|
|
|
// updurls2.cpp : Defines the entry point for the console application.
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "windows.h"
|
|
#include "urlscan.h"
|
|
#include "resource.h"
|
|
|
|
BOOL CheckParameters( int argc, _TCHAR* argv[], BOOL *bQuietMode, BOOL *bExpandOnly );
|
|
|
|
// ShowMessage
|
|
//
|
|
// Show either a warning or a message to the user
|
|
//
|
|
// Parameters:
|
|
// dwMessageId - The id of the message
|
|
// bError - TRUE == error, FALSE == informative
|
|
//
|
|
// This does not return anything, because there would be no
|
|
// point. By this time we have failed or not, and there
|
|
// is not additional way to notify the user
|
|
//
|
|
void ShowMessage( DWORD dwMessageId, BOOL bError )
|
|
{
|
|
HMODULE hModule = GetModuleHandle( NULL );
|
|
TCHAR szMessage[MAX_PATH];
|
|
TCHAR szTitle[MAX_PATH];
|
|
|
|
if ( hModule == NULL )
|
|
{
|
|
// Could not get handle to module
|
|
return;
|
|
}
|
|
|
|
if ( !LoadString( hModule, dwMessageId, szMessage, MAX_PATH ) )
|
|
{
|
|
// Failed to Retrieve Message
|
|
return;
|
|
}
|
|
|
|
if ( !LoadString( hModule, IDS_TITLEBAR, szTitle, MAX_PATH ) )
|
|
{
|
|
// Failed to Retrieve Title
|
|
return;
|
|
}
|
|
|
|
MessageBox( NULL, szMessage, szTitle, MB_OK | ( bError ? MB_ICONEXCLAMATION : MB_ICONINFORMATION ) );
|
|
}
|
|
|
|
// ShowText
|
|
//
|
|
// Show text out to the console
|
|
//
|
|
// Parameters:
|
|
// dwMessageId - The id of the message
|
|
// szExeName - The name of this executable
|
|
//
|
|
// This does not return anything, because there would be no
|
|
// point. By this time we have failed or not, and there
|
|
// is not additional way to notify the user
|
|
//
|
|
void ShowText( DWORD dwMessageId, LPWSTR szExeName )
|
|
{
|
|
HMODULE hModule = GetModuleHandle( NULL );
|
|
TCHAR szMessage[MAX_PATH];
|
|
|
|
if ( hModule == NULL )
|
|
{
|
|
// Could not get handle to module
|
|
return;
|
|
}
|
|
|
|
if ( !LoadString( hModule, dwMessageId, szMessage, MAX_PATH ) )
|
|
{
|
|
// Failed to Retrieve Message
|
|
return;
|
|
}
|
|
|
|
wprintf(szMessage, szExeName);
|
|
}
|
|
|
|
// UrlScanUpdate
|
|
//
|
|
// Update the URLScan files
|
|
DWORD
|
|
UrlScanUpdate()
|
|
{
|
|
TCHAR szUrlScanPath[ MAX_PATH ];
|
|
DWORD dwErr;
|
|
|
|
if ( !IsAdministrator() )
|
|
{
|
|
return IDS_ERROR_ADMIN;
|
|
}
|
|
|
|
if ( !IsUrlScanInstalled( szUrlScanPath, MAX_PATH ) )
|
|
{
|
|
return IDS_ERROR_NOTINSTALLED;
|
|
}
|
|
|
|
dwErr = InstallURLScanFix( szUrlScanPath );
|
|
|
|
if ( dwErr != ERROR_SUCCESS )
|
|
{
|
|
// Failure, IDS resource should be returned
|
|
return dwErr;
|
|
}
|
|
|
|
// This is very cosmetic thing, so we do not want to
|
|
// fail for this reason
|
|
UpdateRegistryforAddRemove();
|
|
|
|
// Success
|
|
return IDS_SUCCESS_UPDATE;
|
|
}
|
|
|
|
// CheckParameters
|
|
//
|
|
// Check Parameters for command line flags
|
|
//
|
|
// Parameters:
|
|
// argc - [in] Number of arguments
|
|
// argv - [in] The list of arguments
|
|
// bQuietMode - [out] Is Quiet Mode Turned On?
|
|
// bExpandOnly - [out] Is Expand Only turned on?
|
|
//
|
|
// Return values:
|
|
// TRUE - Read Parameters without a problem
|
|
// FALSE - Failed to read parameters
|
|
//
|
|
BOOL
|
|
CheckParameters( int argc, _TCHAR* argv[], BOOL *bQuietMode, BOOL *bExpandOnly )
|
|
{
|
|
DWORD dwCount;
|
|
|
|
// SET Defaults
|
|
*bQuietMode = FALSE;
|
|
*bExpandOnly = FALSE;
|
|
|
|
for ( dwCount = 1; dwCount < (DWORD) argc; dwCount ++ )
|
|
{
|
|
if ( ( argv[ dwCount ][0] != '/' ) ||
|
|
( argv[ dwCount ][1] == '\0' ) ||
|
|
( argv[ dwCount ][2] != '\0' )
|
|
)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
// Because if previous "if", command must be in the form "/x\0" where
|
|
// x is any character but '\0'
|
|
switch ( argv[ dwCount ][1] )
|
|
{
|
|
case 'x':
|
|
case 'X':
|
|
*bExpandOnly = TRUE;
|
|
break;
|
|
case 'q':
|
|
case 'Q':
|
|
*bQuietMode = TRUE;
|
|
break;
|
|
default:
|
|
return FALSE;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
int __cdecl wmain(int argc, _TCHAR* argv[])
|
|
{
|
|
BOOL bExpandOnly;
|
|
BOOL bQuietMode;
|
|
BOOL bRet = TRUE;
|
|
DWORD dwErr;
|
|
|
|
if ( !CheckParameters( argc, argv, &bQuietMode, &bExpandOnly ) )
|
|
{
|
|
ShowText( IDS_USAGE, ( argv && argv[0] ) ? argv[0] :
|
|
URLSCAN_UPDATE_DEFAULT_NAME );
|
|
return 1;
|
|
}
|
|
|
|
if ( bExpandOnly )
|
|
{
|
|
// Only Expansion is wanted, so only do that.
|
|
if ( ExtractUrlScanFile( URLSCAN_DEFAULT_FILENAME ) )
|
|
{
|
|
dwErr = IDS_SUCCESS_EXTRACT;
|
|
}
|
|
else
|
|
{
|
|
dwErr = IDS_ERROR_EXTRACT;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
dwErr = UrlScanUpdate();
|
|
}
|
|
|
|
bRet = ( dwErr == IDS_SUCCESS_EXTRACT ) ||
|
|
( dwErr == IDS_SUCCESS_UPDATE );
|
|
|
|
if ( !bQuietMode )
|
|
{
|
|
ShowMessage( dwErr, !bRet );
|
|
}
|
|
|
|
// Return 0 or 1 depending on if there is an error or not
|
|
return bRet ? 0 : 1;
|
|
}
|