|
|
#include "stdafx.h"
#include "DomMigSI.h"
#include "DomMigr.h"
#include "MyNodes.h"
#include "TReg.hpp"
#include "ResStr.h"
#include "Err.hpp"
TError err; TError & errCommon = err; StringLoader gString;
//#import "\bin\DBManager.tlb" no_namespace, named_guids
#import "DBMgr.tlb" no_namespace, named_guids
// {F521FE00-3FA1-11d3-8AED-00A0C9AFE114}
static const GUID CReportingGUID_NODETYPE = { 0xf521fe00, 0x3fa1, 0x11d3, { 0x8a, 0xed, 0x0, 0xa0, 0xc9, 0xaf, 0xe1, 0x14 } }; const GUID* CReportingNode::m_NODETYPE = &CReportingGUID_NODETYPE; const OLECHAR* CReportingNode::m_SZNODETYPE = OLESTR("F521FE00-3FA1-11d3-8AED-00A0C9AFE114"); const OLECHAR* CReportingNode::m_SZDISPLAY_NAME = GET_BSTR(IDS_Reporting); const CLSID* CReportingNode::m_SNAPIN_CLASSID = &CLSID_DomMigrator;
CReportingNode::CReportingNode() { // m_idHTML = IDR_REPT_HTML;
m_htmlPath[0] = 0; m_bstrDisplayName = SysAllocString(GET_STRING(IDS_ReportsMMCNode)); m_scopeDataItem.nImage = IMAGE_INDEX_AD; m_scopeDataItem.nOpenImage = IMAGE_INDEX_AD_OPEN; m_resultDataItem.nImage = 0; m_Reports[0] = NULL; m_Reports[1] = NULL; m_Reports[2] = NULL; m_Reports[3] = NULL; m_Reports[4] = NULL;
};
STDMETHODIMP CReportingNode::GetResultViewType(LPOLESTR * ppViewType, long *pViewOptions) { USES_CONVERSION; TCHAR szPath[MAX_PATH]; TCHAR szModulePath[MAX_PATH];
// set the result view to an HTML page
GetModuleFileName(_Module.GetModuleInstance(),szModulePath, MAX_PATH);
// append decorations RT_HTML IDR_HTML1
if ( m_htmlPath[0] ) { _stprintf(szPath,_T("file://%s"),m_htmlPath); } else { // _stprintf(szPath,_T("res://%s/%ld"),szModulePath,m_idHTML);
_stprintf(szPath,_T("res://%s/rept.htm"),szModulePath); } (*ppViewType) = (LPOLESTR) CoTaskMemAlloc( (_tcslen(szPath)+1) * (sizeof OLECHAR)); if (!(*ppViewType)) return HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY);
ocscpy(*ppViewType,T2OLE(szPath)); (*pViewOptions) = MMC_VIEW_OPTIONS_NOLISTVIEWS; return S_OK; }
HRESULT CReportingNode::UpdateChildren(IConsole * pConsole) { HRESULT hr = S_OK;
m_ChildArray.RemoveAll();
// check the registry entries to see if which reports have been generated
TRegKey rKey; WCHAR filename[MAX_PATH]; CReportingNode * pNode = NULL;
hr = rKey.Open(GET_STRING(IDS_REGKEY_REPORTS)); if ( ! hr ) { // check each report
// Migrated users & groups
hr = rKey.ValueGetStr(L"MigratedAccounts",filename,MAX_PATH); if (! hr ) { if ( ! m_Reports[0] ) { pNode = new CReportingNode(); if (pNode) return HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY); pNode->SetHtmlPath(GET_STRING(IDS_REPORT_MigratedAccounts),filename); m_Reports[0] = pNode; if ( pConsole ) { hr = InsertNodeToScopepane2(pConsole,pNode,m_scopeDataItem.ID); } } else { m_Reports[0]->SetHtmlPath(GET_STRING(IDS_REPORT_MigratedAccounts),filename); } m_ChildArray.Add(pNode); } // Migrated computers
hr = rKey.ValueGetStr(L"MigratedComputers",filename,MAX_PATH); if (! hr ) { if ( ! m_Reports[1] ) { pNode = new CReportingNode(); if (pNode) return HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY); pNode->SetHtmlPath(GET_STRING(IDS_REPORT_MigratedComputers),filename); m_Reports[1] = pNode; if ( pConsole ) { hr = InsertNodeToScopepane2(pConsole,pNode,m_scopeDataItem.ID); } } else { m_Reports[1]->SetHtmlPath(GET_STRING(IDS_REPORT_MigratedComputers),filename); } m_ChildArray.Add(pNode); } // expired computers
hr = rKey.ValueGetStr(L"ExpiredComputers",filename,MAX_PATH); if (! hr ) { if ( ! m_Reports[2] ) { pNode = new CReportingNode(); if (pNode) return HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY); pNode->SetHtmlPath(GET_STRING(IDS_REPORT_ExpiredComputers),filename); m_Reports[2] = pNode; if ( pConsole ) { hr = InsertNodeToScopepane2(pConsole,pNode,m_scopeDataItem.ID); } } else { m_Reports[2]->SetHtmlPath(GET_STRING(IDS_REPORT_ExpiredComputers),filename); } m_ChildArray.Add(pNode); } // account references
hr = rKey.ValueGetStr(L"AccountReferences",filename,MAX_PATH); if (! hr ) { if (! m_Reports[3] ) { pNode = new CReportingNode(); if (pNode) return HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY); pNode->SetHtmlPath(GET_STRING(IDS_REPORT_AccountReferences),filename); m_Reports[3] = pNode; if ( pConsole ) { hr = InsertNodeToScopepane2(pConsole,pNode,m_scopeDataItem.ID); } } else { m_Reports[3]->SetHtmlPath(GET_STRING(IDS_REPORT_AccountReferences),filename); } m_ChildArray.Add(pNode); }
// name conflicts
hr = rKey.ValueGetStr(L"NameConflicts",filename,MAX_PATH); if (! hr ) { if ( ! m_Reports[4] ) { pNode = new CReportingNode(); if (pNode) return HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY); pNode->SetHtmlPath(GET_STRING(IDS_REPORT_NameConflicts),filename); m_Reports[4] = pNode; if ( pConsole ) { hr = InsertNodeToScopepane2(pConsole,pNode,m_scopeDataItem.ID); } } else { m_Reports[4]->SetHtmlPath(GET_STRING(IDS_REPORT_NameConflicts),filename); } m_ChildArray.Add(pNode);
} } return hr; }
|