mirror of https://github.com/tongzx/nt5src
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.
577 lines
14 KiB
577 lines
14 KiB
#include "StdAfx.h"
|
|
#include "Migration.h"
|
|
#include "Switch.h"
|
|
|
|
|
|
namespace
|
|
{
|
|
|
|
void __stdcall AdmtCheckError(HRESULT hr)
|
|
{
|
|
if (FAILED(hr))
|
|
{
|
|
IErrorInfo* pErrorInfo = NULL;
|
|
|
|
if (GetErrorInfo(0, &pErrorInfo) == S_OK)
|
|
{
|
|
_com_raise_error(hr, pErrorInfo);
|
|
}
|
|
else
|
|
{
|
|
_com_issue_error(hr);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Migration Class
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
void CMigration::Initialize(CParameterMap& mapParams)
|
|
{
|
|
bool bValue;
|
|
long lValue;
|
|
_bstr_t strValue;
|
|
|
|
if (mapParams.GetValue(SWITCH_TEST_MIGRATION, bValue))
|
|
{
|
|
m_spMigration->TestMigration = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_INTRA_FOREST, bValue))
|
|
{
|
|
m_spMigration->IntraForest = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_SOURCE_DOMAIN, strValue))
|
|
{
|
|
m_spMigration->SourceDomain = strValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_SOURCE_OU, strValue))
|
|
{
|
|
m_spMigration->SourceOu = strValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_TARGET_DOMAIN, strValue))
|
|
{
|
|
m_spMigration->TargetDomain = strValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_TARGET_OU, strValue))
|
|
{
|
|
m_spMigration->TargetOu = strValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_RENAME_OPTION, lValue))
|
|
{
|
|
m_spMigration->RenameOption = lValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_RENAME_PREFIX_OR_SUFFIX, strValue))
|
|
{
|
|
m_spMigration->RenamePrefixOrSuffix = strValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_PASSWORD_OPTION, lValue))
|
|
{
|
|
m_spMigration->PasswordOption = lValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_PASSWORD_SERVER, strValue))
|
|
{
|
|
AdmtCheckError(m_spMigration->put_PasswordServer(strValue));
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_PASSWORD_FILE, strValue))
|
|
{
|
|
m_spMigration->PasswordFile = strValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_CONFLICT_OPTIONS, lValue))
|
|
{
|
|
m_spMigration->ConflictOptions = lValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_CONFLICT_PREFIX_OR_SUFFIX, strValue))
|
|
{
|
|
m_spMigration->ConflictPrefixOrSuffix = strValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_USER_PROPERTIES_TO_EXCLUDE, strValue))
|
|
{
|
|
m_spMigration->UserPropertiesToExclude = strValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_GROUP_PROPERTIES_TO_EXCLUDE, strValue))
|
|
{
|
|
m_spMigration->GroupPropertiesToExclude = strValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_COMPUTER_PROPERTIES_TO_EXCLUDE, strValue))
|
|
{
|
|
m_spMigration->ComputerPropertiesToExclude = strValue;
|
|
}
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
// User Migration Class
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
void CUserMigration::Initialize(CParameterMap& mapParams)
|
|
{
|
|
bool bValue;
|
|
long lValue;
|
|
|
|
if (mapParams.GetValue(SWITCH_DISABLE_OPTION, lValue))
|
|
{
|
|
m_spUser->DisableOption = lValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_SOURCE_EXPIRATION, lValue))
|
|
{
|
|
m_spUser->SourceExpiration = lValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_MIGRATE_SIDS, bValue))
|
|
{
|
|
m_spUser->MigrateSIDs = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_TRANSLATE_ROAMING_PROFILE, bValue))
|
|
{
|
|
m_spUser->TranslateRoamingProfile = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_UPDATE_USER_RIGHTS, bValue))
|
|
{
|
|
m_spUser->UpdateUserRights = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_MIGRATE_GROUPS, bValue))
|
|
{
|
|
m_spUser->MigrateGroups = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_UPDATE_PREVIOUSLY_MIGRATED_OBJECTS, bValue))
|
|
{
|
|
m_spUser->UpdatePreviouslyMigratedObjects = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_FIX_GROUP_MEMBERSHIP, bValue))
|
|
{
|
|
m_spUser->FixGroupMembership = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_MIGRATE_SERVICE_ACCOUNTS, bValue))
|
|
{
|
|
m_spUser->MigrateServiceAccounts = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_SOURCE_EXPIRATION, lValue))
|
|
{
|
|
m_spUser->SourceExpiration = lValue;
|
|
}
|
|
|
|
_variant_t vntExcludeNames;
|
|
|
|
if (!mapParams.GetValues(SWITCH_EXCLUDE_NAME, vntExcludeNames))
|
|
{
|
|
_bstr_t strExcludeFile;
|
|
|
|
if (mapParams.GetValue(SWITCH_EXCLUDE_FILE, strExcludeFile))
|
|
{
|
|
vntExcludeNames = strExcludeFile;
|
|
}
|
|
}
|
|
|
|
_variant_t vntIncludeNames;
|
|
_bstr_t strIncludeFile;
|
|
long lIncludeOption;
|
|
|
|
if (mapParams.GetValues(SWITCH_INCLUDE_NAME, vntIncludeNames))
|
|
{
|
|
AdmtCheckError(m_spUser->raw_Migrate(admtData, vntIncludeNames, vntExcludeNames));
|
|
}
|
|
else if (mapParams.GetValue(SWITCH_INCLUDE_FILE, strIncludeFile))
|
|
{
|
|
AdmtCheckError(m_spUser->raw_Migrate(admtFile, _variant_t(strIncludeFile), vntExcludeNames));
|
|
}
|
|
else if (mapParams.GetValue(SWITCH_INCLUDE_DOMAIN, lIncludeOption))
|
|
{
|
|
AdmtCheckError(m_spUser->raw_Migrate(admtDomain | lIncludeOption, _variant_t(), vntExcludeNames));
|
|
}
|
|
else
|
|
{
|
|
ThrowError(E_INVALIDARG, IDS_E_NO_INCLUDE_OPTION_SPECIFIED);
|
|
}
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Group Migration Class
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
void CGroupMigration::Initialize(CParameterMap& mapParams)
|
|
{
|
|
bool bValue;
|
|
long lValue;
|
|
|
|
if (mapParams.GetValue(SWITCH_MIGRATE_SIDS, bValue))
|
|
{
|
|
m_spGroup->MigrateSIDs = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_UPDATE_GROUP_RIGHTS, bValue))
|
|
{
|
|
m_spGroup->UpdateGroupRights = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_UPDATE_PREVIOUSLY_MIGRATED_OBJECTS, bValue))
|
|
{
|
|
m_spGroup->UpdatePreviouslyMigratedObjects = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_FIX_GROUP_MEMBERSHIP, bValue))
|
|
{
|
|
m_spGroup->FixGroupMembership = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_MIGRATE_MEMBERS, bValue))
|
|
{
|
|
m_spGroup->MigrateMembers = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_DISABLE_OPTION, lValue))
|
|
{
|
|
m_spGroup->DisableOption = lValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_SOURCE_EXPIRATION, lValue))
|
|
{
|
|
m_spGroup->SourceExpiration = lValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_TRANSLATE_ROAMING_PROFILE, bValue))
|
|
{
|
|
m_spGroup->TranslateRoamingProfile = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
_variant_t vntExcludeNames;
|
|
|
|
if (!mapParams.GetValues(SWITCH_EXCLUDE_NAME, vntExcludeNames))
|
|
{
|
|
_bstr_t strExcludeFile;
|
|
|
|
if (mapParams.GetValue(SWITCH_EXCLUDE_FILE, strExcludeFile))
|
|
{
|
|
vntExcludeNames = strExcludeFile;
|
|
}
|
|
}
|
|
|
|
_variant_t vntIncludeNames;
|
|
_bstr_t strIncludeFile;
|
|
long lIncludeOption;
|
|
|
|
if (mapParams.GetValues(SWITCH_INCLUDE_NAME, vntIncludeNames))
|
|
{
|
|
AdmtCheckError(m_spGroup->raw_Migrate(admtData, vntIncludeNames, vntExcludeNames));
|
|
}
|
|
else if (mapParams.GetValue(SWITCH_INCLUDE_FILE, strIncludeFile))
|
|
{
|
|
AdmtCheckError(m_spGroup->raw_Migrate(admtFile, _variant_t(strIncludeFile), vntExcludeNames));
|
|
}
|
|
else if (mapParams.GetValue(SWITCH_INCLUDE_DOMAIN, lIncludeOption))
|
|
{
|
|
AdmtCheckError(m_spGroup->raw_Migrate(admtDomain | lIncludeOption, _variant_t(), vntExcludeNames));
|
|
}
|
|
else
|
|
{
|
|
ThrowError(E_INVALIDARG, IDS_E_NO_INCLUDE_OPTION_SPECIFIED);
|
|
}
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Computer Migration Class
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
void CComputerMigration::Initialize(CParameterMap& mapParams)
|
|
{
|
|
bool bValue;
|
|
long lValue;
|
|
|
|
if (mapParams.GetValue(SWITCH_TRANSLATION_OPTION, lValue))
|
|
{
|
|
m_spComputer->TranslationOption = lValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_TRANSLATE_FILES_AND_FOLDERS, bValue))
|
|
{
|
|
m_spComputer->TranslateFilesAndFolders = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_TRANSLATE_LOCAL_GROUPS, bValue))
|
|
{
|
|
m_spComputer->TranslateLocalGroups = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_TRANSLATE_PRINTERS, bValue))
|
|
{
|
|
m_spComputer->TranslatePrinters = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_TRANSLATE_REGISTRY, bValue))
|
|
{
|
|
m_spComputer->TranslateRegistry = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_TRANSLATE_SHARES, bValue))
|
|
{
|
|
m_spComputer->TranslateShares = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_TRANSLATE_USER_PROFILES, bValue))
|
|
{
|
|
m_spComputer->TranslateUserProfiles = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_TRANSLATE_USER_RIGHTS, bValue))
|
|
{
|
|
m_spComputer->TranslateUserRights = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_RESTART_DELAY, lValue))
|
|
{
|
|
m_spComputer->RestartDelay = lValue;
|
|
}
|
|
|
|
_variant_t vntExcludeNames;
|
|
|
|
if (!mapParams.GetValues(SWITCH_EXCLUDE_NAME, vntExcludeNames))
|
|
{
|
|
_bstr_t strExcludeFile;
|
|
|
|
if (mapParams.GetValue(SWITCH_EXCLUDE_FILE, strExcludeFile))
|
|
{
|
|
vntExcludeNames = strExcludeFile;
|
|
}
|
|
}
|
|
|
|
_variant_t vntIncludeNames;
|
|
_bstr_t strIncludeFile;
|
|
long lIncludeOption;
|
|
|
|
if (mapParams.GetValues(SWITCH_INCLUDE_NAME, vntIncludeNames))
|
|
{
|
|
AdmtCheckError(m_spComputer->raw_Migrate(admtData, vntIncludeNames, vntExcludeNames));
|
|
}
|
|
else if (mapParams.GetValue(SWITCH_INCLUDE_FILE, strIncludeFile))
|
|
{
|
|
AdmtCheckError(m_spComputer->raw_Migrate(admtFile, _variant_t(strIncludeFile), vntExcludeNames));
|
|
}
|
|
else if (mapParams.GetValue(SWITCH_INCLUDE_DOMAIN, lIncludeOption))
|
|
{
|
|
AdmtCheckError(m_spComputer->raw_Migrate(admtDomain | lIncludeOption, _variant_t(), vntExcludeNames));
|
|
}
|
|
else
|
|
{
|
|
ThrowError(E_INVALIDARG, IDS_E_NO_INCLUDE_OPTION_SPECIFIED);
|
|
}
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Security Translation Class
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
void CSecurityTranslation::Initialize(CParameterMap& mapParams)
|
|
{
|
|
bool bValue;
|
|
long lValue;
|
|
_bstr_t strValue;
|
|
|
|
if (mapParams.GetValue(SWITCH_TRANSLATION_OPTION, lValue))
|
|
{
|
|
m_spSecurity->TranslationOption = lValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_TRANSLATE_FILES_AND_FOLDERS, bValue))
|
|
{
|
|
m_spSecurity->TranslateFilesAndFolders = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_TRANSLATE_LOCAL_GROUPS, bValue))
|
|
{
|
|
m_spSecurity->TranslateLocalGroups = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_TRANSLATE_PRINTERS, bValue))
|
|
{
|
|
m_spSecurity->TranslatePrinters = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_TRANSLATE_REGISTRY, bValue))
|
|
{
|
|
m_spSecurity->TranslateRegistry = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_TRANSLATE_SHARES, bValue))
|
|
{
|
|
m_spSecurity->TranslateShares = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_TRANSLATE_USER_PROFILES, bValue))
|
|
{
|
|
m_spSecurity->TranslateUserProfiles = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_TRANSLATE_USER_RIGHTS, bValue))
|
|
{
|
|
m_spSecurity->TranslateUserRights = bValue ? VARIANT_TRUE : VARIANT_FALSE;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_SID_MAPPING_FILE, strValue))
|
|
{
|
|
AdmtCheckError(m_spSecurity->put_SidMappingFile(strValue));
|
|
}
|
|
|
|
_variant_t vntExcludeNames;
|
|
|
|
if (!mapParams.GetValues(SWITCH_EXCLUDE_NAME, vntExcludeNames))
|
|
{
|
|
_bstr_t strExcludeFile;
|
|
|
|
if (mapParams.GetValue(SWITCH_EXCLUDE_FILE, strExcludeFile))
|
|
{
|
|
vntExcludeNames = strExcludeFile;
|
|
}
|
|
}
|
|
|
|
_variant_t vntIncludeNames;
|
|
_bstr_t strIncludeFile;
|
|
long lIncludeOption;
|
|
|
|
if (mapParams.GetValues(SWITCH_INCLUDE_NAME, vntIncludeNames))
|
|
{
|
|
AdmtCheckError(m_spSecurity->raw_Translate(admtData, vntIncludeNames, vntExcludeNames));
|
|
}
|
|
else if (mapParams.GetValue(SWITCH_INCLUDE_FILE, strIncludeFile))
|
|
{
|
|
AdmtCheckError(m_spSecurity->raw_Translate(admtFile, _variant_t(strIncludeFile), vntExcludeNames));
|
|
}
|
|
else if (mapParams.GetValue(SWITCH_INCLUDE_DOMAIN, lIncludeOption))
|
|
{
|
|
AdmtCheckError(m_spSecurity->raw_Translate(admtDomain | lIncludeOption, _variant_t(), vntExcludeNames));
|
|
}
|
|
else
|
|
{
|
|
ThrowError(E_INVALIDARG, IDS_E_NO_INCLUDE_OPTION_SPECIFIED);
|
|
}
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Service Enumeration Class
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
void CServiceEnumeration::Initialize(CParameterMap& mapParams)
|
|
{
|
|
_variant_t vntExcludeNames;
|
|
|
|
if (!mapParams.GetValues(SWITCH_EXCLUDE_NAME, vntExcludeNames))
|
|
{
|
|
_bstr_t strExcludeFile;
|
|
|
|
if (mapParams.GetValue(SWITCH_EXCLUDE_FILE, strExcludeFile))
|
|
{
|
|
vntExcludeNames = strExcludeFile;
|
|
}
|
|
}
|
|
|
|
_variant_t vntIncludeNames;
|
|
_bstr_t strIncludeFile;
|
|
long lIncludeOption;
|
|
|
|
if (mapParams.GetValues(SWITCH_INCLUDE_NAME, vntIncludeNames))
|
|
{
|
|
AdmtCheckError(m_spService->raw_Enumerate(admtData, vntIncludeNames, vntExcludeNames));
|
|
}
|
|
else if (mapParams.GetValue(SWITCH_INCLUDE_FILE, strIncludeFile))
|
|
{
|
|
AdmtCheckError(m_spService->raw_Enumerate(admtFile, _variant_t(strIncludeFile), vntExcludeNames));
|
|
}
|
|
else if (mapParams.GetValue(SWITCH_INCLUDE_DOMAIN, lIncludeOption))
|
|
{
|
|
AdmtCheckError(m_spService->raw_Enumerate(admtDomain | lIncludeOption, _variant_t(), vntExcludeNames));
|
|
}
|
|
else
|
|
{
|
|
ThrowError(E_INVALIDARG, IDS_E_NO_INCLUDE_OPTION_SPECIFIED);
|
|
}
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Report Generation Class
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
void CReportGeneration::Initialize(CParameterMap& mapParams)
|
|
{
|
|
long lValue;
|
|
_bstr_t strValue;
|
|
|
|
if (mapParams.GetValue(SWITCH_REPORT_TYPE, lValue))
|
|
{
|
|
m_spReport->Type = lValue;
|
|
}
|
|
|
|
if (mapParams.GetValue(SWITCH_REPORT_FOLDER, strValue))
|
|
{
|
|
AdmtCheckError(m_spReport->put_Folder(strValue));
|
|
}
|
|
|
|
_variant_t vntExcludeNames;
|
|
|
|
if (!mapParams.GetValues(SWITCH_EXCLUDE_NAME, vntExcludeNames))
|
|
{
|
|
_bstr_t strExcludeFile;
|
|
|
|
if (mapParams.GetValue(SWITCH_EXCLUDE_FILE, strExcludeFile))
|
|
{
|
|
vntExcludeNames = strExcludeFile;
|
|
}
|
|
}
|
|
|
|
_variant_t vntIncludeNames;
|
|
_bstr_t strIncludeFile;
|
|
long lIncludeOption;
|
|
|
|
if (mapParams.GetValues(SWITCH_INCLUDE_NAME, vntIncludeNames))
|
|
{
|
|
AdmtCheckError(m_spReport->raw_Generate(admtData, vntIncludeNames, vntExcludeNames));
|
|
}
|
|
else if (mapParams.GetValue(SWITCH_INCLUDE_FILE, strIncludeFile))
|
|
{
|
|
AdmtCheckError(m_spReport->raw_Generate(admtFile, _variant_t(strIncludeFile), vntExcludeNames));
|
|
}
|
|
else if (mapParams.GetValue(SWITCH_INCLUDE_DOMAIN, lIncludeOption))
|
|
{
|
|
AdmtCheckError(m_spReport->raw_Generate(admtDomain | lIncludeOption, _variant_t(), vntExcludeNames));
|
|
}
|
|
else
|
|
{
|
|
AdmtCheckError(m_spReport->raw_Generate(admtNone, _variant_t(), _variant_t()));
|
|
}
|
|
}
|