|
|
//____________________________________________________________________________
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1995 - 1996.
//
// File: SnpInReg.cpp
//
// Contents:
//
// Classes:
//
// Functions:
//
// History: 11/10/1998 JonN Created
//
//____________________________________________________________________________
#include "stdafx.h"
#pragma hdrstop
#include "..\corecopy\regkey.h"
#include "snapreg.h"
#include "stdutils.h" // g_aNodetypeGUIDs
HRESULT RegisterNodetypes( AMC::CRegKey& regkeyParent, int* aiNodetypeIndexes, int cNodetypeIndexes ) { try { AMC::CRegKey regkeyNodeTypes; regkeyNodeTypes.CreateKeyEx( regkeyParent, _T("NodeTypes") ); AMC::CRegKey regkeyNodeType; for (int i = 0; i < cNodetypeIndexes; i++) { regkeyNodeType.CreateKeyEx( regkeyNodeTypes, g_aNodetypeGuids[aiNodetypeIndexes[i]].bstr ); regkeyNodeType.CloseKey(); } } catch (COleException* e) { ASSERT(FALSE); e->Delete(); return SELFREG_E_CLASS; } return S_OK; }
HRESULT RegisterSnapin( AMC::CRegKey& regkeySnapins, LPCTSTR pszSnapinGUID, BSTR bstrPrimaryNodetype, UINT residSnapinName, UINT residProvider, UINT residVersion, bool fStandalone, LPCTSTR pszAboutGUID, int* aiNodetypeIndexes, int cNodetypeIndexes ) { CString strProvider, strVersion; if ( !strProvider.LoadString(residProvider) || !strVersion.LoadString(residVersion) ) { ASSERT(FALSE); return SELFREG_E_CLASS; } return RegisterSnapin( regkeySnapins, pszSnapinGUID, bstrPrimaryNodetype, residSnapinName, strProvider, strVersion, fStandalone, pszAboutGUID, aiNodetypeIndexes, cNodetypeIndexes); }
HRESULT RegisterSnapin( AMC::CRegKey& regkeySnapins, LPCTSTR pszSnapinGUID, BSTR bstrPrimaryNodetype, UINT residSnapinName, const CString& szProvider, const CString& szVersion, bool fStandalone, LPCTSTR pszAboutGUID, int* aiNodetypeIndexes, int cNodetypeIndexes ) { HRESULT hr = S_OK; try { AMC::CRegKey regkeySnapin; CString strSnapinName; if ( !strSnapinName.LoadString(residSnapinName) ) { ASSERT(FALSE); return SELFREG_E_CLASS; } regkeySnapin.CreateKeyEx( regkeySnapins, pszSnapinGUID ); if (NULL != bstrPrimaryNodetype) { regkeySnapin.SetString( _T("NodeType"), bstrPrimaryNodetype ); } regkeySnapin.SetString( _T("NameString"), strSnapinName ); regkeySnapin.SetString( _T("Provider"), szProvider ); regkeySnapin.SetString( _T("Version"), szVersion ); if (fStandalone) { AMC::CRegKey regkeyStandalone; regkeyStandalone.CreateKeyEx( regkeySnapin, _T("StandAlone") ); } if (NULL != pszAboutGUID) { regkeySnapin.SetString( _T("About"), pszAboutGUID ); } if ( NULL != aiNodetypeIndexes && 0 != cNodetypeIndexes ) { hr = RegisterNodetypes( regkeySnapin, aiNodetypeIndexes, cNodetypeIndexes ); }
//
// JonN 4/25/00
// 100624: MUI: MMC: Shared Folders snap-in stores
// its display information in the registry
//
// MMC now supports NameStringIndirect
//
TCHAR achModuleFileName[MAX_PATH+20]; if (0 < ::GetModuleFileName( AfxGetInstanceHandle(), achModuleFileName, (sizeof(achModuleFileName)/sizeof(TCHAR)) - 1 )) { achModuleFileName[MAX_PATH+19] = _T('\0'); // 616500-2002/05/07-JonN
CString strNameIndirect; strNameIndirect.Format( _T("@%s,-%d"), achModuleFileName, residSnapinName ); regkeySnapin.SetString( _T("NameStringIndirect"), strNameIndirect ); } } catch (COleException* e) { ASSERT(FALSE); e->Delete(); return SELFREG_E_CLASS; } return hr; }
|