327 lines
8 KiB
C++
327 lines
8 KiB
C++
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Copyright (c) 1996-1999 Microsoft Corporation
|
||
|
//
|
||
|
// Module Name:
|
||
|
// RegCOMObj.cpp
|
||
|
//
|
||
|
// Abstract:
|
||
|
// The functions in this file are used to register and unregister the COM
|
||
|
// objects used by Cluster Server.
|
||
|
//
|
||
|
// Author:
|
||
|
// C. Brent Thomas (a-brentt) April 1 1998
|
||
|
//
|
||
|
// Revision History:
|
||
|
//
|
||
|
// Notes:
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <windows.h>
|
||
|
#include <winerror.h>
|
||
|
#include <tchar.h>
|
||
|
|
||
|
#include "SetupCommonLibRes.h"
|
||
|
|
||
|
typedef HRESULT (*PFDLLREGISTERSERVER)(void);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//++
|
||
|
//
|
||
|
// RegisterCOMObject
|
||
|
//
|
||
|
// Routine Description:
|
||
|
// This function attempts to register a COM object.
|
||
|
//
|
||
|
// Arguments:
|
||
|
// ptszCOMObjectFileName - points to the name of the COM object file.
|
||
|
// ptszPathToCOMObject - points to the location of the COM object.
|
||
|
//
|
||
|
//
|
||
|
// Return Value:
|
||
|
// ERROR_SUCCESS - indicated success
|
||
|
// Any other value is an NT error code retrunde by GetLastError()
|
||
|
//
|
||
|
//--
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
DWORD RegisterCOMObject( LPCTSTR ptszCOMObjectFileName,
|
||
|
LPCTSTR ptszPathToCOMObject )
|
||
|
{
|
||
|
DWORD dwStatus;
|
||
|
|
||
|
HINSTANCE hLib = NULL;
|
||
|
|
||
|
TCHAR tszComObjFileName[_MAX_PATH];
|
||
|
|
||
|
LPSTR pszEntryPoint;
|
||
|
|
||
|
PFDLLREGISTERSERVER pfnRegisterServer;
|
||
|
|
||
|
// ASSERT(ptszCOMObjectFileName != NULL); BUGBUG
|
||
|
// ASSERT(ptszPathToCOMObject != NULL);
|
||
|
|
||
|
//
|
||
|
// Construct the file name.
|
||
|
//
|
||
|
|
||
|
wsprintf( tszComObjFileName, TEXT("%s\\%s"), ptszPathToCOMObject, ptszCOMObjectFileName );
|
||
|
|
||
|
//
|
||
|
// Load the DLL.
|
||
|
//
|
||
|
|
||
|
hLib = LoadLibrary( tszComObjFileName );
|
||
|
|
||
|
if ( hLib != NULL )
|
||
|
{
|
||
|
//
|
||
|
// Get the DllRegisterServer entry point.
|
||
|
//
|
||
|
|
||
|
pfnRegisterServer = (PFDLLREGISTERSERVER) GetProcAddress( hLib,
|
||
|
"DllRegisterServer" );
|
||
|
|
||
|
if ( pfnRegisterServer != NULL )
|
||
|
{
|
||
|
//
|
||
|
// Call the entry point.
|
||
|
//
|
||
|
|
||
|
dwStatus = (*pfnRegisterServer)();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
dwStatus = GetLastError();
|
||
|
}
|
||
|
|
||
|
FreeLibrary( hLib );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
dwStatus = GetLastError();
|
||
|
}
|
||
|
|
||
|
return ( dwStatus );
|
||
|
} // RegisterCOMObject
|
||
|
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//++
|
||
|
//
|
||
|
// UnRegisterCOMObject
|
||
|
//
|
||
|
// Routine Description:
|
||
|
// This function attempts to unregister a COM object.
|
||
|
//
|
||
|
// Arguments:
|
||
|
// ptszCOMObjectFileName - points to the name of the COM object file.
|
||
|
// ptszPathToCOMObject - points to the location of the COM object.
|
||
|
//
|
||
|
//
|
||
|
// Return Value:
|
||
|
// ERROR_SUCCESS - indicated success
|
||
|
// Any other value is an NT error code retrunde by GetLastError()
|
||
|
//
|
||
|
//--
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
|
||
|
DWORD UnRegisterCOMObject( LPCTSTR ptszCOMObjectFileName,
|
||
|
LPCTSTR ptszPathToCOMObject )
|
||
|
{
|
||
|
DWORD dwStatus;
|
||
|
|
||
|
HINSTANCE hLib = NULL;
|
||
|
|
||
|
TCHAR tszComObjFileName[_MAX_PATH];
|
||
|
|
||
|
LPSTR pszEntryPoint;
|
||
|
|
||
|
PFDLLREGISTERSERVER pfnRegisterServer;
|
||
|
|
||
|
// ASSERT(ptszCOMObjectFileName != NULL); BUGBUG
|
||
|
// ASSERT(ptszPathToCOMObject != NULL);
|
||
|
|
||
|
//
|
||
|
// Construct the file name.
|
||
|
//
|
||
|
|
||
|
wsprintf( tszComObjFileName, TEXT("%s\\%s"), ptszPathToCOMObject, ptszCOMObjectFileName );
|
||
|
|
||
|
//
|
||
|
// Load the DLL.
|
||
|
//
|
||
|
|
||
|
hLib = LoadLibrary( tszComObjFileName );
|
||
|
|
||
|
if ( hLib != NULL )
|
||
|
{
|
||
|
//
|
||
|
// Get the DllRegisterServer entry point.
|
||
|
//
|
||
|
|
||
|
pfnRegisterServer = (PFDLLREGISTERSERVER) GetProcAddress( hLib,
|
||
|
"DllUnregisterServer" );
|
||
|
|
||
|
if ( pfnRegisterServer != NULL )
|
||
|
{
|
||
|
//
|
||
|
// Call the entry point.
|
||
|
//
|
||
|
|
||
|
dwStatus = (*pfnRegisterServer)();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
dwStatus = GetLastError();
|
||
|
}
|
||
|
|
||
|
FreeLibrary( hLib );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
dwStatus = GetLastError();
|
||
|
}
|
||
|
|
||
|
return ( dwStatus );
|
||
|
} // UnRegisterCOMObject
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//++
|
||
|
//
|
||
|
// UnRegisterClusterCOMObjects
|
||
|
//
|
||
|
// Routine Description:
|
||
|
// This function unregisters the COM objects that are components of Cluster
|
||
|
// Server.
|
||
|
//
|
||
|
// Arguments:
|
||
|
// hWnd - the handle to the parent window.
|
||
|
// ptszPathToCOMObject - points to the location of the COM objects to be
|
||
|
// unregistered..
|
||
|
//
|
||
|
// Return Value:
|
||
|
// (BOOL) TRUE - indicates success
|
||
|
// (BOOL) FALSE - indicates that an error was encountered
|
||
|
//
|
||
|
//--
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
BOOL UnRegisterClusterCOMObjects( HINSTANCE hInstance,
|
||
|
LPCTSTR ptszPathToCOMObject )
|
||
|
{
|
||
|
BOOL fReturnValue = (BOOL) TRUE;
|
||
|
|
||
|
DWORD dwURCORv;
|
||
|
|
||
|
TCHAR tszMessage[256]; // arbitrary size
|
||
|
TCHAR tszFormatString[256];
|
||
|
|
||
|
|
||
|
//
|
||
|
// Unregister CluAdMMC.
|
||
|
//
|
||
|
|
||
|
dwURCORv = UnRegisterCOMObject( TEXT("CluAdMMC.dll"), ptszPathToCOMObject );
|
||
|
|
||
|
if ( (dwURCORv != (DWORD) ERROR_SUCCESS) && (dwURCORv != (DWORD) ERROR_MOD_NOT_FOUND) )
|
||
|
{
|
||
|
if ( LoadString( hInstance, IDS_ERROR_UNREGISTERING_COM_OBJECT,
|
||
|
tszFormatString, 256 ) > 0 )
|
||
|
{
|
||
|
wsprintf( tszMessage, tszFormatString, dwURCORv, TEXT("CluAdMMC.dll") );
|
||
|
|
||
|
MessageBox( NULL, tszMessage, NULL, MB_OK | MB_ICONEXCLAMATION );
|
||
|
} // Did LoadString succeed?
|
||
|
|
||
|
fReturnValue = (BOOL) FALSE;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Unregister ClAdmWiz.
|
||
|
//
|
||
|
|
||
|
dwURCORv = UnRegisterCOMObject( TEXT("ClAdmWiz.dll"), ptszPathToCOMObject );
|
||
|
|
||
|
if ( (dwURCORv != (DWORD) ERROR_SUCCESS) && (dwURCORv != (DWORD) ERROR_MOD_NOT_FOUND) )
|
||
|
{
|
||
|
if ( LoadString( hInstance, IDS_ERROR_UNREGISTERING_COM_OBJECT,
|
||
|
tszFormatString, 256 ) > 0 )
|
||
|
{
|
||
|
wsprintf( tszMessage, tszFormatString, dwURCORv, TEXT("ClAdmWiz.dll") );
|
||
|
|
||
|
MessageBox( NULL, tszMessage, NULL, MB_OK | MB_ICONEXCLAMATION );
|
||
|
} // Did LoadString succeed?
|
||
|
|
||
|
fReturnValue = (BOOL) FALSE;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Unregister IISClEx3.
|
||
|
//
|
||
|
|
||
|
dwURCORv = UnRegisterCOMObject( TEXT("IISClEx3.dll"), ptszPathToCOMObject );
|
||
|
|
||
|
if ( (dwURCORv != (DWORD) ERROR_SUCCESS) && (dwURCORv != (DWORD) ERROR_MOD_NOT_FOUND) )
|
||
|
{
|
||
|
if ( LoadString( hInstance, IDS_ERROR_UNREGISTERING_COM_OBJECT,
|
||
|
tszFormatString, 256 ) > 0 )
|
||
|
{
|
||
|
wsprintf( tszMessage, tszFormatString, dwURCORv, TEXT("IISClEx3.dll") );
|
||
|
|
||
|
MessageBox( NULL, tszMessage, NULL, MB_OK | MB_ICONEXCLAMATION );
|
||
|
} // Did LoadString succeed?
|
||
|
|
||
|
fReturnValue = (BOOL) FALSE;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Unregister ClNetREx.
|
||
|
//
|
||
|
|
||
|
dwURCORv = UnRegisterCOMObject( TEXT("ClNetREx.dll"), ptszPathToCOMObject );
|
||
|
|
||
|
if ( (dwURCORv != (DWORD) ERROR_SUCCESS) && (dwURCORv != (DWORD) ERROR_MOD_NOT_FOUND) )
|
||
|
{
|
||
|
if ( LoadString( hInstance, IDS_ERROR_UNREGISTERING_COM_OBJECT,
|
||
|
tszFormatString, 256 ) > 0 )
|
||
|
{
|
||
|
wsprintf( tszMessage, tszFormatString, dwURCORv, TEXT("ClNetREx.dll") );
|
||
|
|
||
|
MessageBox( NULL, tszMessage, NULL, MB_OK | MB_ICONEXCLAMATION );
|
||
|
} // Did LoadString succeed?
|
||
|
|
||
|
fReturnValue = (BOOL) FALSE;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Unregister CluAdmEx.
|
||
|
//
|
||
|
|
||
|
dwURCORv = UnRegisterCOMObject( TEXT("CluAdmEx.dll"), ptszPathToCOMObject );
|
||
|
|
||
|
if ( (dwURCORv != (DWORD) ERROR_SUCCESS) && (dwURCORv != (DWORD) ERROR_MOD_NOT_FOUND) )
|
||
|
{
|
||
|
if ( LoadString( hInstance, IDS_ERROR_UNREGISTERING_COM_OBJECT,
|
||
|
tszFormatString, 256 ) > 0 )
|
||
|
{
|
||
|
wsprintf( tszMessage, tszFormatString, dwURCORv, TEXT("CluAdmEx.dll") );
|
||
|
|
||
|
MessageBox( NULL, tszMessage, NULL, MB_OK | MB_ICONEXCLAMATION );
|
||
|
} // Did LoadString succeed?
|
||
|
|
||
|
fReturnValue = (BOOL) FALSE;
|
||
|
}
|
||
|
|
||
|
return ( fReturnValue );
|
||
|
}
|