Leaked source code of windows server 2003
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.
 
 
 
 
 
 

5100 lines
147 KiB

#include "stdafx.h"
#include "Callback.h"
#include "GetDcName.h"
#ifndef IADsContainerPtr
_COM_SMARTPTR_TYPEDEF(IADsContainer, IID_IADsContainer);
#endif
#ifndef IADsADSystemInfoPtr
_COM_SMARTPTR_TYPEDEF(IADsADSystemInfo, IID_IADsADSystemInfo);
#endif
extern BOOL GetDomainAndUserFromUPN(WCHAR const * UPNname,CString& domainNetbios, CString& user);
INT_PTR CALLBACK
IntServiceInfoButtonProc(
IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
HWND hLC6= GetDlgItem(hwndDlg,IDC_LIST_SERVICE);
m_serviceBox.Attach(hLC6);
CString column;
column.LoadString(IDS_COLUMN_COMPUTER); m_serviceBox.InsertColumn( 1, column,LVCFMT_LEFT,100,1);
column.LoadString(IDS_COLUMN_SERVICE); m_serviceBox.InsertColumn( 2, column,LVCFMT_LEFT,0,1);
column.LoadString(IDS_COLUMN_ACCOUNT); m_serviceBox.InsertColumn( 3, column,LVCFMT_LEFT,100,1);
column.LoadString(IDS_COLUMN_STATUS); m_serviceBox.InsertColumn( 4, column,LVCFMT_LEFT,85,1);
//new
column.LoadString(IDS_COLUMN_SERVICE_DISPLAY); m_serviceBox.InsertColumn( 5, column,LVCFMT_LEFT,75,1);
getService();
break;
}
case WM_COMMAND:
{
switch(LOWORD (wParam))
{
case IDC_TOGGLE:
{
OnTOGGLE(hwndDlg);
break;
}
case IDC_UPDATE:
{
OnUPDATE(hwndDlg);
break;
}
default :
break;
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case LVN_COLUMNCLICK:
{
LPNMLISTVIEW pnmv = (NM_LISTVIEW FAR *) lParam;
pdata->sort[pnmv->iSubItem] = !pdata->sort[pnmv->iSubItem];
sort(m_serviceBox,pnmv->iSubItem,pdata->sort[pnmv->iSubItem] );
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
break;
}
case NM_SETFOCUS :
case NM_KILLFOCUS :
case NM_CLICK:
{
activateServiceButtons(hwndDlg);
break;
}
case PSN_SETACTIVE :
disable(hwndDlg,IDC_UPDATE);
disable(hwndDlg,IDC_TOGGLE);
if (migration==w_service && (pdata->refreshing && !alreadyRefreshed))
{
refreshDB(hwndDlg);
alreadyRefreshed = true;
getService();
}
if (pdata->refreshing)
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_NEXT);
else
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
break;
case PSN_WIZNEXT :
{
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
CString computer ,service,account,c;
CString skip,include;
skip.LoadString(IDS_SKIP); include.LoadString(IDS_INCLUDE);
for (int i=0;i<m_serviceBox.GetItemCount();i++)
{
computer = m_serviceBox.GetItemText(i,0);
service = m_serviceBox.GetItemText(i,1);
account = m_serviceBox.GetItemText(i,2);
c = m_serviceBox.GetItemText(i,3);
if (c== skip)
{
db->SetServiceAcctEntryStatus(_bstr_t(computer), _bstr_t(service), _bstr_t(account),SvcAcctStatus_DoNotUpdate);
}
else if (c==include)
{
db->SetServiceAcctEntryStatus(_bstr_t(computer), _bstr_t(service), _bstr_t(account), SvcAcctStatus_NotMigratedYet);
}
}
//find and remove from varset
break;
}
case PSN_WIZBACK :
if (!pdata->refreshing && migration==w_service)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_SA_REFRESH);
return TRUE;
}
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_RESET :
break;
case PSN_HELP :
{
SharedHelp(SERVICE_ACCOUNT_INFO, hwndDlg);
break;
}
default :
break;
}
break;
}
case WM_HELP :
{
SharedHelp(SERVICE_ACCOUNT_INFO, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK
IntServiceInfoProc(
IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
CheckRadioButton(hwndDlg,IDC_UPDATE,IDC_SKIP,IDC_UPDATE);
HWND hLC6= GetDlgItem(hwndDlg,IDC_LIST_SERVICE);
m_serviceBox.Attach(hLC6);
CString column;
column.LoadString(IDS_COLUMN_COMPUTER); m_serviceBox.InsertColumn( 1, column,LVCFMT_LEFT,100,1);
column.LoadString(IDS_COLUMN_SERVICE); m_serviceBox.InsertColumn( 2, column,LVCFMT_LEFT,0,1);
column.LoadString(IDS_COLUMN_ACCOUNT); m_serviceBox.InsertColumn( 3, column,LVCFMT_LEFT,100,1);
column.LoadString(IDS_COLUMN_STATUS); m_serviceBox.InsertColumn( 4, column,LVCFMT_LEFT,85,1);
//new
column.LoadString(IDS_COLUMN_SERVICE_DISPLAY); m_serviceBox.InsertColumn( 5, column,LVCFMT_LEFT,75,1);
getService();
break;
}
case WM_COMMAND:
{
switch(LOWORD (wParam))
{
case IDC_TOGGLE:
{
OnTOGGLE(hwndDlg);
break;
}
case IDC_SKIP:
{
disable(hwndDlg,IDC_TOGGLE);
disable(hwndDlg,IDC_LIST_SERVICE);
break;
}
case IDC_UPDATE:
{
enable(hwndDlg,IDC_LIST_SERVICE);
break;
}
default :
break;
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case LVN_COLUMNCLICK:
{
LPNMLISTVIEW pnmv = (NM_LISTVIEW FAR *) lParam;
pdata->sort[pnmv->iSubItem] = !pdata->sort[pnmv->iSubItem];
sort(m_serviceBox,pnmv->iSubItem,pdata->sort[pnmv->iSubItem] );
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
break;
}
case NM_SETFOCUS :
case NM_KILLFOCUS :
case NM_CLICK:
{
activateServiceButtons2(hwndDlg);
break;
}
case PSN_SETACTIVE :
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
disable(hwndDlg,IDC_TOGGLE);
if (pdata->refreshing && !alreadyRefreshed)
{
put(DCTVS_Options_Wizard, L"service");
refreshDB(hwndDlg);
put(DCTVS_Options_Wizard, L"user");
alreadyRefreshed = true;
}
getService();
break;
case PSN_WIZNEXT :
{
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
if(IsDlgButtonChecked(hwndDlg,IDC_SKIP))
{
setDBStatusSkip();
}
else if(IsDlgButtonChecked(hwndDlg,IDC_UPDATE))
{
if (setDBStatusInclude(hwndDlg))
{
CString message,title;
message.LoadString(IDS_MSG_LOCAL);title.LoadString(IDS_MSG_WARNING);
MessageBox(hwndDlg,message,title,MB_OK|MB_ICONINFORMATION);
}
}
break;
}
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_RESET :
break;
case PSN_HELP :
{
SharedHelp(USER_SERVICE_ACCOUNT, hwndDlg);
break;
}
default :
break;
}
break;
}
case WM_HELP :
{
SharedHelp(USER_SERVICE_ACCOUNT, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK
IntServiceRefreshProc(
IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
IUnknown * pUnk;
pVarSetService->QueryInterface(IID_IUnknown, (void**) &pUnk);
db->GetServiceAccount(L"",&pUnk);
pUnk->Release();
_bstr_t text;
text = pVarSetService->get(L"ServiceAccountEntries");
int numItems=_ttoi((WCHAR const *)text);
if (numItems==0 )
{
CheckRadioButton(hwndDlg,IDC_REFRESH,IDC_NO_REFRESH,IDC_REFRESH) ;
disable(hwndDlg,IDC_NO_REFRESH);
}
else
CheckRadioButton(hwndDlg,IDC_REFRESH,IDC_NO_REFRESH,IDC_NO_REFRESH);
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
break;
case PSN_WIZNEXT :
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
if (IsDlgButtonChecked(hwndDlg,IDC_REFRESH) )
{
pdata->refreshing = true;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_SELECTION1);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_SELECTION1);
return TRUE;
}
else
{
pdata->refreshing = false;
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_SA_INFO_BUTTON);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_SA_INFO_BUTTON);
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
return TRUE;
}
break;
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(REFRESH_INFO_HELP, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
}
case WM_HELP :
{
SharedHelp(REFRESH_INFO_HELP, hwndDlg);
break;
}
default:
break;
}
return 0;
}
//this function is no longer used
INT_PTR CALLBACK
IntOptionsFromUserProc(
IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
CString editHeader;
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
CString toformat;
toformat.LoadString(IDS_30);
calculateDate(hwndDlg,toformat);
SetDlgItemText(hwndDlg,IDC_yo,toformat);
disable(hwndDlg,IDC_yo);
disable(hwndDlg,IDC_DATE);
disable(hwndDlg,IDC_TEXT);
initcheckbox( hwndDlg,IDC_TRANSLATE_ROAMING_PROFILES,DCTVS_AccountOptions_TranslateRoamingProfiles);
// initdisablebox(hwndDlg,IDC_DISABLE_SOURCE_ACCOUNTS,IDC_DISABLE_COPIED_ACCOUNTS,IDC_DISABLE_NEITHER_ACCOUNT,
// L"AccountOptions.DisableSourceAccounts",L"AccountOptions.DisableCopiedAccounts");
if (IsDlgButtonChecked(hwndDlg,IDC_DISABLE_SOURCE_ACCOUNTS))
{
disable(hwndDlg,IDC_SET_EXPIRATION);
disable(hwndDlg,IDC_yo);
}
else
{
enable(hwndDlg,IDC_SET_EXPIRATION);
if (IsDlgButtonChecked(hwndDlg,IDC_SET_EXPIRATION))
enable(hwndDlg,IDC_yo);
}
break;
}
case WM_COMMAND:
{
switch(LOWORD (wParam))
{
case IDC_SET_EXPIRATION :
{
if (IsDlgButtonChecked(hwndDlg,IDC_SET_EXPIRATION))
{
enable(hwndDlg,IDC_yo);
enable(hwndDlg,IDC_DATE);
enable(hwndDlg,IDC_TEXT);
}
else
{
disable(hwndDlg,IDC_yo);
disable(hwndDlg,IDC_DATE);
disable(hwndDlg,IDC_TEXT);
}
break;
}
case IDC_DISABLE_SOURCE_ACCOUNTS :
{
disable(hwndDlg,IDC_SET_EXPIRATION);
disable(hwndDlg,IDC_yo);
break;
}
case IDC_DISABLE_COPIED_ACCOUNTS :
{
enable(hwndDlg,IDC_SET_EXPIRATION);
if (IsDlgButtonChecked(hwndDlg,IDC_SET_EXPIRATION))
enable(hwndDlg,IDC_yo);
break;
}
case IDC_DISABLE_NEITHER_ACCOUNT :
{
enable(hwndDlg,IDC_SET_EXPIRATION);
if (IsDlgButtonChecked(hwndDlg,IDC_SET_EXPIRATION))
enable(hwndDlg,IDC_yo);
break;
}
default :
break;
}
switch(HIWORD (wParam)){
case EN_SETFOCUS :
bChangeOnFly=true;
break;
case EN_KILLFOCUS :
bChangeOnFly=false;
break;
case EN_CHANGE:
{
if ((!bChangeOnFly) || (LOWORD(wParam) != IDC_yo))
break;
CString s;
GetDlgItemText(hwndDlg,IDC_yo,s.GetBuffer(1000),1000);
s.ReleaseBuffer();
//make sure all chars are digits
bool bInvalid = false;
int ndx=0;
while ((ndx < s.GetLength()) && (!bInvalid))
{
if (!iswdigit(s[ndx]))
bInvalid = true;
ndx++;
}
if (bInvalid)
{
//for invalid days, blank out the date
SetDlgItemText(hwndDlg,IDC_DATE,L"");
}
else //else continue checking for validity
{
long ndays = _wtol(s);
if (((ndays <= THREE_YEARS) && (ndays >= 1)) ||
(!UStrICmp(s,L"0")))
calculateDate(hwndDlg,s);
else
{
//for invalid days, blank out the date
SetDlgItemText(hwndDlg,IDC_DATE,L"");
}
}
break;
}
default :
break;
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
break;
case PSN_WIZNEXT :
{
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
checkbox( hwndDlg,IDC_DISABLE_SOURCE_ACCOUNTS,DCTVS_AccountOptions_DisableSourceAccounts);
checkbox( hwndDlg,IDC_DISABLE_COPIED_ACCOUNTS,DCTVS_AccountOptions_DisableCopiedAccounts);
_variant_t varX;
if ((IsWindowEnabled(GetDlgItem(hwndDlg, IDC_SET_EXPIRATION))) &&
(IsDlgButtonChecked( hwndDlg,IDC_SET_EXPIRATION)))
{
time_t t;
if (timeInABox(hwndDlg,t))
{
varX =t;
put(DCTVS_AccountOptions_ExpireSourceAccounts,varX);
}
else
{
MessageBoxWrapper(hwndDlg,IDS_MSG_TIME,IDS_MSG_ERROR);
// SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_DISABLE);
SetFocus(GetDlgItem(hwndDlg, IDC_yo));
SendDlgItemMessage(hwndDlg, IDC_yo, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
}
else
{
varX = L"";
put(DCTVS_AccountOptions_ExpireSourceAccounts,varX);
}
checkbox( hwndDlg,IDC_TRANSLATE_ROAMING_PROFILES,DCTVS_AccountOptions_TranslateRoamingProfiles);
if (someServiceAccounts(pdata->accounts,hwndDlg))
{
pdata->someService=true;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_SA_INFO);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_SA_INFO);
return TRUE;
}
else
{
pdata->someService=false;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_END_GROUP);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_END_GROUP);
return TRUE;
}
break;
}
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(GROUP_MEMBER_OPTION, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(GROUP_MEMBER_OPTION, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK
IntOptionsProc(
IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
){
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
initnoncollisionrename(hwndDlg);
initcheckbox( hwndDlg,IDC_TRANSLATE_ROAMING_PROFILES,DCTVS_AccountOptions_TranslateRoamingProfiles);
initcheckbox( hwndDlg,IDC_UPDATE_USER_RIGHTS,DCTVS_AccountOptions_UpdateUserRights);
initcheckbox( hwndDlg,IDC_MIGRATE_GROUPS_OF_USERS,DCTVS_AccountOptions_CopyMemberOf);
initcheckbox( hwndDlg,IDC_REMIGRATE_OBJECTS,DCTVS_AccountOptions_IncludeMigratedAccts);
initcheckbox( hwndDlg,IDC_FIX_MEMBERSHIP,DCTVS_AccountOptions_FixMembership);
if (IsDlgButtonChecked(hwndDlg,IDC_MIGRATE_GROUPS_OF_USERS))
{
pdata->memberSwitch=true;
enable(hwndDlg,IDC_REMIGRATE_OBJECTS);
}
else
disable(hwndDlg,IDC_REMIGRATE_OBJECTS);
if (pdata->sameForest)
{
CheckDlgButton(hwndDlg,IDC_FIX_MEMBERSHIP,true);
disable(hwndDlg,IDC_FIX_MEMBERSHIP);
}
break;
}
case WM_COMMAND:
{
switch(LOWORD (wParam))
{
case IDC_MIGRATE_GROUPS_OF_USERS:
{
pdata->memberSwitch=(!pdata->memberSwitch);
pdata->memberSwitch ? enable(hwndDlg,IDC_REMIGRATE_OBJECTS):disable(hwndDlg,IDC_REMIGRATE_OBJECTS);
bChangedMigrationTypes=true;
break;
}
case IDC_RADIO_NONE :
{
disable(hwndDlg,IDC_PRE);
disable(hwndDlg,IDC_SUF);
CheckDlgButton(hwndDlg,IDC_RADIO_PRE,false);
CheckDlgButton(hwndDlg,IDC_RADIO_SUF,false);
break;
}
case IDC_RADIO_PRE :
{
enable(hwndDlg,IDC_PRE);
disable(hwndDlg,IDC_SUF);
CheckDlgButton(hwndDlg,IDC_RADIO_NONE,false);
CheckDlgButton(hwndDlg,IDC_RADIO_SUF,false);
SetFocus(GetDlgItem(hwndDlg, IDC_PRE));
SendDlgItemMessage(hwndDlg, IDC_PRE, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
break;
}
case IDC_RADIO_SUF :
{
disable(hwndDlg,IDC_PRE);
enable(hwndDlg,IDC_SUF);
CheckDlgButton(hwndDlg,IDC_RADIO_PRE,false);
CheckDlgButton(hwndDlg,IDC_RADIO_NONE,false);
SetFocus(GetDlgItem(hwndDlg, IDC_SUF));
SendDlgItemMessage(hwndDlg, IDC_SUF, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
break;
}
default :
break;
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
break;
case PSN_WIZNEXT :
{
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
checkbox( hwndDlg,IDC_TRANSLATE_ROAMING_PROFILES,DCTVS_AccountOptions_TranslateRoamingProfiles);
checkbox( hwndDlg,IDC_UPDATE_USER_RIGHTS,DCTVS_AccountOptions_UpdateUserRights);
checkbox( hwndDlg,IDC_MIGRATE_GROUPS_OF_USERS,DCTVS_AccountOptions_CopyMemberOf);
checkbox( hwndDlg,IDC_MIGRATE_GROUPS_OF_USERS,DCTVS_AccountOptions_CopyLocalGroups);
checkbox( hwndDlg,IDC_FIX_MEMBERSHIP,DCTVS_AccountOptions_FixMembership);
if (IsDlgButtonChecked(hwndDlg,IDC_MIGRATE_GROUPS_OF_USERS))
checkbox( hwndDlg,IDC_REMIGRATE_OBJECTS,DCTVS_AccountOptions_IncludeMigratedAccts);
else if (pdata->sameForest)
{
CString yo;
yo.LoadString(IDS_GRATUITIOUS_MESSAGE);
CString warning;
warning.LoadString(IDS_MSG_WARNING);
MessageBox(hwndDlg,yo,warning,MB_OK| MB_ICONINFORMATION);
}
if ( !noncollisionrename(hwndDlg))
{
int nID = IDC_PRE;
MessageBoxWrapperFormat1(hwndDlg,IDS_MSG_INVALIDCHARS,IDS_INVALID_STRING,IDS_MSG_INPUT);
//set focus on invalid string
if (IsDlgButtonChecked(hwndDlg,IDC_RADIO_SUF))
nID = IDC_SUF;
SetFocus(GetDlgItem(hwndDlg, nID));
SendDlgItemMessage(hwndDlg, nID, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
if ((pdata->sourceIsNT4))
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT,IDD_RENAMING);
return TRUE;
}
if (pdata->sameForest && migration==w_account)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_RENAMING);
return TRUE;
}
break;
}
case PSN_WIZBACK :
if (pdata->sameForest && migration==w_account)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_OU_SELECTION);
return TRUE;
}
if (!pdata->sameForest && pdata->IsSidHistoryChecked)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_CREDENTIALS);
return TRUE;
}
else
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_DISABLE);
return TRUE;
}
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(USER_OPTION_HELP, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(USER_OPTION_HELP, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK
IntOptionsReportingProc(
IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
HWND hLC7= GetDlgItem(hwndDlg,IDC_LIST_REPORTING);
m_reportingBox.Attach(hLC7);
CString column;
column.LoadString(IDS_COLUMN_REPORT); m_reportingBox.InsertColumn( 1, column,LVCFMT_LEFT,150,1);
column.LoadString(IDS_COLUMN_LASTGENERATEDON); m_reportingBox.InsertColumn( 2,column,LVCFMT_LEFT,280,1);
getReporting();
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
// (m_reportingBox.GetFirstSelectedItemPosition())?
(m_reportingBox.GetNextItem(-1, LVNI_SELECTED) != -1)?
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT):
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK);
break;
case NM_SETFOCUS :
case NM_KILLFOCUS :
break;
case NM_CLICK :
{
// (m_reportingBox.GetFirstSelectedItemPosition())?
(m_reportingBox.GetNextItem(-1, LVNI_SELECTED) != -1)?
PostMessage(GetParent(hwndDlg), PSM_SETWIZBUTTONS, 0, PSWIZB_BACK|PSWIZB_NEXT):
PostMessage(GetParent(hwndDlg), PSM_SETWIZBUTTONS, 0, PSWIZB_BACK);
break;
}
case PSN_WIZNEXT :
{
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
putReporting();
_bstr_t text= get(DCTVS_Reports_AccountReferences);
if (!UStrICmp(text ,(WCHAR const *) yes))
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_SELECTION1);
return TRUE;
}
else
{
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_END_REPORTING);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_END_REPORTING);
return TRUE;
}
break;
}
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(REPORT_SELECTION_HELP, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(REPORT_SELECTION_HELP, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK
IntRetryProc(
IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
CWaitCursor w;
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
HWND hLC= GetDlgItem(hwndDlg,IDC_LIST_RETRY);
m_cancelBox.Attach(hLC);
CString column;
column.LoadString(IDS_COLUMN_SERVER); m_cancelBox.InsertColumn( 1, column,LVCFMT_LEFT,90,1);
column.LoadString(IDS_COLUMN_JOBFILE); m_cancelBox.InsertColumn( 2, column,LVCFMT_LEFT,0,1);
column.LoadString(IDS_COLUMN_STATUS); m_cancelBox.InsertColumn( 3, column,LVCFMT_LEFT,140,1);
column.LoadString(IDS_COLUMN_ACTION); m_cancelBox.InsertColumn( 4, column,LVCFMT_LEFT,115,1);
column.LoadString(IDS_COLUMN_ACTIONID); m_cancelBox.InsertColumn( 5, column,LVCFMT_LEFT,0,1);
column.LoadString(IDS_COLUMN_SKIPINCLUDE); m_cancelBox.InsertColumn( 6, column,LVCFMT_LEFT,80,1);
getFailed(hwndDlg);
disable(hwndDlg,IDC_CANCEL);
disable(hwndDlg,IDC_TOGGLE);
break;
}
case WM_COMMAND:
{
switch(LOWORD (wParam))
{
case IDC_CANCEL :
{
CWaitCursor w;
CString toggleWarning,title;
title.LoadString(IDS_MSG_WARNING);
toggleWarning.LoadString(IDS_MSG_PERMANENT_REMOVE);
if (MessageBox(hwndDlg,toggleWarning,title,MB_OKCANCEL|MB_ICONEXCLAMATION)==IDOK)
{
handleCancel(hwndDlg);
if (m_cancelBox.GetItemCount()==0) PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK);
}
!SomethingToRetry() ?
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK ):
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
break;
}
case IDC_TOGGLE :
{
OnRetryToggle();
!SomethingToRetry() ?
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK ):
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
break;
}
default :
break;
}
activateCancelIfNecessary(hwndDlg);
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case LVN_COLUMNCLICK:
{
LPNMLISTVIEW pnmv = (NM_LISTVIEW FAR *) lParam;
pdata->sort[pnmv->iSubItem] = !pdata->sort[pnmv->iSubItem];
//sort(m_cancelBox,pnmv->iSubItem,pdata->sort[pnmv->iSubItem] );
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
break;
}
case NM_SETFOCUS :
case NM_KILLFOCUS :
case NM_CLICK:
{
activateCancelIfNecessary(hwndDlg);
break;
}
case PSN_SETACTIVE :
!SomethingToRetry() ?
PostMessage(GetParent(hwndDlg), PSM_SETWIZBUTTONS, 0, PSWIZB_BACK):
PostMessage(GetParent(hwndDlg), PSM_SETWIZBUTTONS, 0, PSWIZB_BACK|PSWIZB_NEXT);
break;
case PSN_WIZNEXT :
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
if (!SomethingToRetry())
{
MessageBoxWrapper(hwndDlg,IDS_MSG_CANCEL,IDS_MSG_ERROR);
// SetWindowLong(hwndDlg,DWL_MSGRESULT,IDD_RETRY);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,IDD_RETRY);
return TRUE;
}
else
{
//get the name of any server that has more than one task selected for it
CString sServer = GetServerWithMultipleTasks();
//if no machine with more than one task included, then retry those tasks
if (sServer.IsEmpty())
{
if (!OnRETRY(hwndDlg))
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, -1);
return TRUE;
}
}
else //else, print error message
{
MessageBoxWrapperFormat1P(hwndDlg,IDS_MSG_DUP_RETRY_SERVER,IDS_MSG_DUP_TITLE,sServer);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
}
break;
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(TASK_SELECTION_HELP, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(TASK_SELECTION_HELP, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK
IntPasswordProc(
IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
CString editHeader;
bool bPopulated = true;
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
initpasswordbox(hwndDlg,IDC_GENERATE_STRONG_PASSWORDS,IDC_GENERATE_STRONG_PASSWORDS_NOT, IDC_MIG_PASSWORDS,
L"AccountOptions.GenerateStrongPasswords", L"AccountOptions.CopyPasswords");
bPopulated = populatePasswordDCs(hwndDlg, IDC_PASSWORD_DC, pdata->sourceIsNT4);
if (IsDlgButtonChecked(hwndDlg,IDC_MIG_PASSWORDS))
{
disable(hwndDlg,IDC_BROWSE);
switchboxes(hwndDlg, IDC_PASSWORD_FILE, IDC_PASSWORD_DC);
editHeader.LoadString(IDS_PASSWORD_DC_HDR);
SetDlgItemText(hwndDlg,IDC_PASSWORD_EDIT,editHeader);
if (!bPopulated)
addStringToComboBox(hwndDlg,IDC_PASSWORD_DC,sourceDC);
initDCcombobox( hwndDlg,IDC_PASSWORD_DC,DCTVS_AccountOptions_PasswordDC);
}
else
{
enable(hwndDlg,IDC_BROWSE);
switchboxes(hwndDlg, IDC_PASSWORD_DC, IDC_PASSWORD_FILE);
editHeader.LoadString(IDS_PASSWORD_FILE_HDR);
SetDlgItemText(hwndDlg,IDC_PASSWORD_EDIT,editHeader);
initeditbox( hwndDlg,IDC_PASSWORD_FILE,DCTVS_AccountOptions_PasswordFile);
if (IsDlgItemEmpty(hwndDlg,IDC_PASSWORD_FILE))
{
CString toinsert;
GetDirectory(toinsert.GetBuffer(1000));
toinsert.ReleaseBuffer();
toinsert+="Logs\\passwords.txt";
SetDlgItemText(hwndDlg,IDC_PASSWORD_FILE,toinsert);
}
}
break;
}
case WM_COMMAND:
{
switch(LOWORD (wParam))
{
case IDC_BROWSE :
OnFileBrowse(hwndDlg,IDC_PASSWORD_FILE);
break;
case IDC_MIG_PASSWORDS :
disable(hwndDlg,IDC_BROWSE);
switchboxes(hwndDlg, IDC_PASSWORD_FILE, IDC_PASSWORD_DC);
editHeader.LoadString(IDS_PASSWORD_DC_HDR);
SetDlgItemText(hwndDlg,IDC_PASSWORD_EDIT,editHeader);
if (!populatePasswordDCs(hwndDlg, IDC_PASSWORD_DC, pdata->sourceIsNT4))
addStringToComboBox(hwndDlg,IDC_PASSWORD_DC,sourceDC);
initDCcombobox( hwndDlg,IDC_PASSWORD_DC,DCTVS_AccountOptions_PasswordDC);
break;
case IDC_GENERATE_STRONG_PASSWORDS :
case IDC_GENERATE_STRONG_PASSWORDS_NOT :
enable(hwndDlg,IDC_BROWSE);
switchboxes(hwndDlg, IDC_PASSWORD_DC, IDC_PASSWORD_FILE);
editHeader.LoadString(IDS_PASSWORD_FILE_HDR);
SetDlgItemText(hwndDlg,IDC_PASSWORD_EDIT,editHeader);
initeditbox( hwndDlg,IDC_PASSWORD_FILE,DCTVS_AccountOptions_PasswordFile);
if (IsDlgItemEmpty(hwndDlg,IDC_PASSWORD_FILE))
{
CString toinsert;
GetDirectory(toinsert.GetBuffer(1000));
toinsert.ReleaseBuffer();
toinsert+="Logs\\passwords.txt";
SetDlgItemText(hwndDlg,IDC_PASSWORD_FILE,toinsert);
}
break;
default:
break;
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
bPopulated = populatePasswordDCs(hwndDlg, IDC_PASSWORD_DC, pdata->sourceIsNT4);
initDCcombobox( hwndDlg,IDC_PASSWORD_DC,DCTVS_AccountOptions_PasswordDC);
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
break;
case PSN_WIZNEXT :
{
BOOL bMigPwd = FALSE;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
checkbox( hwndDlg,IDC_GENERATE_STRONG_PASSWORDS,DCTVS_AccountOptions_GenerateStrongPasswords);
checkbox( hwndDlg,IDC_MIG_PASSWORDS,DCTVS_AccountOptions_CopyPasswords);
if (IsDlgButtonChecked(hwndDlg,IDC_MIG_PASSWORDS))
{
_variant_t varX = yes;
pVarSet->put(GET_BSTR(DCTVS_AccountOptions_GenerateStrongPasswords), varX);
bMigPwd = TRUE;
}
if ((!bMigPwd) && (!checkFile(hwndDlg)))
{
MessageBoxWrapper(hwndDlg,IDS_MSG_FILE,IDS_MSG_INPUT);
// SetWindowLong(hwndDlg,DWL_MSGRESULT,IDD_PASSWORD);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,IDD_PASSWORD);
return TRUE;
}
if (IsDlgButtonChecked(hwndDlg,IDC_MIG_PASSWORDS))
editbox( hwndDlg,IDC_PASSWORD_DC,DCTVS_AccountOptions_PasswordDC);
else
editbox( hwndDlg,IDC_PASSWORD_FILE,DCTVS_AccountOptions_PasswordFile);
//check to see if the password DC has the DLL installed and ready
if (bMigPwd)
{
CString msg, title;
UINT msgtype;
_bstr_t sTemp;
sTemp = _bstr_t(get(DCTVS_AccountOptions_PasswordDC));
CString srcSvr = (WCHAR*)sTemp;
if (!IsPasswordDCReady(srcSvr, msg, title, &msgtype))
{
if (MessageBox(hwndDlg, msg, title, msgtype) != IDNO)
{
SetFocus(GetDlgItem(hwndDlg, IDC_PASSWORD_DC));
SendDlgItemMessage(hwndDlg, IDC_PASSWORD_DC, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
}
else //else, store this tgtDC used in this check for use during the migration
{
pVarSet->put(GET_BSTR(DCTVS_Options_TargetServerOverride), GetTargetDcNameFlat());
pVarSet->put(GET_BSTR(DCTVS_Options_TargetServerOverrideDns), GetTargetDcNameDns());
}
}
if (IsDlgButtonChecked(hwndDlg,IDC_GENERATE_STRONG_PASSWORDS_NOT))
{
ShowWarning(hwndDlg);
}
break;
}
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(PASSWORD_OPTION_HELP, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(PASSWORD_OPTION_HELP, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK
IntTargetGroupProc(
IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
break;
}
case WM_COMMAND:
{
switch(LOWORD (wParam))
{
case IDC_BROWSE:
{
HRESULT hr = pDsObjectPicker2->InvokeDialog(hwndDlg, &pdo2);
if (FAILED(hr)) return 0;
if (hr == S_OK) {
ProcessSelectedObjects2(pdo2,hwndDlg);
pdo2->Release();
}
break;
}
default :
break;
}
switch(HIWORD(wParam))
{
case EN_CHANGE :
enableNextIfNecessary(hwndDlg,IDC_TARGET_GROUP);
break;
default:
break;
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
enableNextIfNecessary(hwndDlg,IDC_TARGET_GROUP);
break;
case PSN_WIZNEXT :
{
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
_bstr_t text = get(DCTVS_Accounts_NumItems);
int count = _ttoi((WCHAR * const) text);
CString base=L"",toadd;
_variant_t varX;
for (int i = 0;i<count;i++)
{
base.Format(L"Accounts.%ld.TargetName",i);
GetDlgItemText(hwndDlg,IDC_TARGET_GROUP,toadd.GetBuffer(1000),1000);
toadd.ReleaseBuffer();
varX = toadd;
pVarSet->put(_bstr_t(base),varX);
}
break;
}
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(TARGET_GROUP_SELECTION, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(TARGET_GROUP_SELECTION, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK
IntTrustProc(
IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{CWaitCursor w;
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
HWND hLC= GetDlgItem(hwndDlg,IDC_LIST_SERVICE);
m_trustBox.Attach(hLC);
CString column;
column.LoadString(IDS_COLUMN_DOMAIN); m_trustBox.InsertColumn( 1, column,LVCFMT_LEFT,155,1);
column.LoadString(IDS_COLUMN_DIRECTION); m_trustBox.InsertColumn( 2, column,LVCFMT_LEFT,80,1);
column.LoadString(IDS_COLUMN_ATTRIBUTES); m_trustBox.InsertColumn( 3, column,LVCFMT_LEFT,80,1);
column.LoadString(IDS_COLUMN_EXISTSFORTARGET); m_trustBox.InsertColumn( 4, column,LVCFMT_LEFT,90,1);
disable(hwndDlg,IDC_MIGRATE);
if (pdata->newSource)
{
m_trustBox.DeleteAllItems();
getTrust();
pdata->newSource=false;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
}
break;
}
case WM_COMMAND:
{
switch(LOWORD (wParam))
{
case IDC_MIGRATE:
{
bool atleast1succeeded=false;
CString errDomain;
HRESULT hr = MigrateTrusts(hwndDlg,atleast1succeeded,errDomain);
if (SUCCEEDED(hr))
{
if (atleast1succeeded)
{
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
pdata->proceed= true;
}
}
else
{
if (errDomain.IsEmpty())
ErrorWrapper(hwndDlg,hr);
else
ErrorWrapper3(hwndDlg, hr, errDomain);
}
activateTrustButton(hwndDlg);
break;
}
default :
break;
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case LVN_COLUMNCLICK:
{
LPNMLISTVIEW pnmv = (NM_LISTVIEW FAR *) lParam;
pdata->sort[pnmv->iSubItem] = !pdata->sort[pnmv->iSubItem];
//sort(m_trustBox,pnmv->iSubItem,pdata->sort[pnmv->iSubItem] );
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
break;
}
case NM_SETFOCUS :
case NM_KILLFOCUS :
case NM_CLICK:
{
activateTrustButton(hwndDlg);
break;
}
case PSN_SETACTIVE :
if (pdata->newSource)
{
m_trustBox.DeleteAllItems();
getTrust();
pdata->newSource=false;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
}
pdata->proceed ?
PostMessage(GetParent(hwndDlg), PSM_SETWIZBUTTONS, 0, PSWIZB_BACK|PSWIZB_NEXT):
PostMessage(GetParent(hwndDlg), PSM_SETWIZBUTTONS, 0, PSWIZB_BACK);
break;
case PSN_WIZNEXT :
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
if (!pdata->proceed)
{
MessageBoxWrapper(hwndDlg,IDS_MSG_SELECT_TRUST,IDS_MSG_INPUT);
// SetWindowLong(hwndDlg,DWL_MSGRESULT,IDD_TRUST_INFO);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,IDD_TRUST_INFO);
return TRUE;
}
break;
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(TRUST_INFO_HELP, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(TRUST_INFO_HELP, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK
IntRebootProc(
IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
initnoncollisionrename(hwndDlg);
addrebootValues(hwndDlg);
initeditbox(hwndDlg,IDC_COMBO2,DCTVS_Options_GuiOnlyRebootSaver);
if (IsDlgItemEmpty(hwndDlg,IDC_COMBO2))
{
CString s;
s.LoadString(IDS_FIVE);
SetDlgItemText(hwndDlg,IDC_COMBO2,s);
}
break;
}
case WM_COMMAND :
{
switch(LOWORD(wParam))
{
case IDC_RADIO_NONE :
{
disable(hwndDlg,IDC_PRE);
disable(hwndDlg,IDC_SUF);
CheckDlgButton(hwndDlg,IDC_RADIO_PRE,false);
CheckDlgButton(hwndDlg,IDC_RADIO_SUF,false);
break;
}
case IDC_RADIO_PRE :
{
enable(hwndDlg,IDC_PRE);
disable(hwndDlg,IDC_SUF);
CheckDlgButton(hwndDlg,IDC_RADIO_NONE,false);
CheckDlgButton(hwndDlg,IDC_RADIO_SUF,false);
SetFocus(GetDlgItem(hwndDlg, IDC_PRE));
SendDlgItemMessage(hwndDlg, IDC_PRE, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
break;
}
case IDC_RADIO_SUF :
{
disable(hwndDlg,IDC_PRE);
enable(hwndDlg,IDC_SUF);
CheckDlgButton(hwndDlg,IDC_RADIO_NONE,false);
CheckDlgButton(hwndDlg,IDC_RADIO_PRE,false);
SetFocus(GetDlgItem(hwndDlg, IDC_SUF));
SendDlgItemMessage(hwndDlg, IDC_SUF, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
break;
}
default:
{
break;
}
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
enableNextIfNecessary(hwndDlg,IDC_COMBO2);
break;
case PSN_WIZNEXT :
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
if (validReboot(hwndDlg,IDC_COMBO2))
{
editbox(hwndDlg,IDC_COMBO2,DCTVS_Options_GuiOnlyRebootSaver);
pdata->rebootDelay=rebootbox( hwndDlg,IDC_COMBO2);
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
}
else
{
MessageBoxWrapper(hwndDlg,IDS_MSG_REBOOT,IDS_MSG_INPUT);
// SetWindowLong(hwndDlg,DWL_MSGRESULT,IDD_REBOOT);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,IDD_REBOOT);
return TRUE;
}
if ( !noncollisionrename(hwndDlg))
{
int nID = IDC_PRE;
MessageBoxWrapperFormat1(hwndDlg,IDS_MSG_INVALIDCHARS,IDS_INVALID_STRING,IDS_MSG_INPUT);
//set focus on invalid string
if (IsDlgButtonChecked(hwndDlg,IDC_RADIO_SUF))
nID = IDC_SUF;
SetFocus(GetDlgItem(hwndDlg, nID));
SendDlgItemMessage(hwndDlg, nID, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
// SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,IDD_REBOOT);
}
if (pdata->sourceIsNT4)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_RENAMING);
return TRUE;
}
break;
case PSN_WIZBACK :
{
if (migration==w_computer)
{
if (!pdata->translateObjects)
{
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_TRANSLATION);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_TRANSLATION);
return TRUE;
}
else
{
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_TRANSLATION_MODE);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_TRANSLATION_MODE);
return TRUE;
}
}
}
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(COMPUTER_OPTION, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(COMPUTER_OPTION, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK
IntTranslationProc(
IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
initcheckbox( hwndDlg,IDC_FILES,DCTVS_Security_TranslateFiles);
initcheckbox( hwndDlg,IDC_SHARES,DCTVS_Security_TranslateShares);
initcheckbox( hwndDlg,IDC_PRINTERS,DCTVS_Security_TranslatePrinters);
initcheckbox( hwndDlg,IDC_USER_RIGHTS,DCTVS_Security_TranslateUserRights);
initcheckbox( hwndDlg,IDC_LOCAL_GROUPS,DCTVS_Security_TranslateLocalGroups);
initcheckbox( hwndDlg,IDC_USER_PROFILES,DCTVS_Security_TranslateUserProfiles);
initcheckbox( hwndDlg,IDC_REGISTRY,DCTVS_Security_TranslateRegistry);
if ((IsDlgButtonChecked(hwndDlg,IDC_FILES)) ||
(IsDlgButtonChecked(hwndDlg,IDC_SHARES)) ||
(IsDlgButtonChecked(hwndDlg,IDC_PRINTERS)) ||
(IsDlgButtonChecked(hwndDlg,IDC_USER_RIGHTS)) ||
(IsDlgButtonChecked(hwndDlg,IDC_LOCAL_GROUPS)) ||
(IsDlgButtonChecked(hwndDlg,IDC_USER_PROFILES)) ||
(IsDlgButtonChecked(hwndDlg,IDC_REGISTRY)) ||
(migration==w_computer))
{
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
}
else
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK);
break;
}
case WM_COMMAND:
{
bool bCheck = false;
switch(LOWORD (wParam))
{
case IDC_FILES :
bCheck = true;
break;
case IDC_SHARES :
bCheck = true;
break;
case IDC_PRINTERS :
bCheck = true;
break;
case IDC_USER_RIGHTS :
bCheck = true;
break;
case IDC_LOCAL_GROUPS :
bCheck = true;
break;
case IDC_USER_PROFILES :
bCheck = true;
break;
case IDC_REGISTRY :
bCheck = true;
break;
default:
break;
}
if (bCheck)
{
if ((IsDlgButtonChecked(hwndDlg,IDC_FILES)) ||
(IsDlgButtonChecked(hwndDlg,IDC_SHARES)) ||
(IsDlgButtonChecked(hwndDlg,IDC_PRINTERS)) ||
(IsDlgButtonChecked(hwndDlg,IDC_USER_RIGHTS)) ||
(IsDlgButtonChecked(hwndDlg,IDC_LOCAL_GROUPS)) ||
(IsDlgButtonChecked(hwndDlg,IDC_USER_PROFILES)) ||
(IsDlgButtonChecked(hwndDlg,IDC_REGISTRY)) ||
(migration==w_computer))
{
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
}
else
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK);
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
if ((IsDlgButtonChecked(hwndDlg,IDC_FILES)) ||
(IsDlgButtonChecked(hwndDlg,IDC_SHARES)) ||
(IsDlgButtonChecked(hwndDlg,IDC_PRINTERS)) ||
(IsDlgButtonChecked(hwndDlg,IDC_USER_RIGHTS)) ||
(IsDlgButtonChecked(hwndDlg,IDC_LOCAL_GROUPS)) ||
(IsDlgButtonChecked(hwndDlg,IDC_USER_PROFILES)) ||
(IsDlgButtonChecked(hwndDlg,IDC_REGISTRY)) ||
(migration==w_computer))
{
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
}
else
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK);
break;
case PSN_WIZNEXT :
checkbox( hwndDlg,IDC_FILES,DCTVS_Security_TranslateFiles);
checkbox( hwndDlg,IDC_SHARES,DCTVS_Security_TranslateShares);
checkbox( hwndDlg,IDC_PRINTERS,DCTVS_Security_TranslatePrinters);
checkbox( hwndDlg,IDC_USER_RIGHTS,DCTVS_Security_TranslateUserRights);
checkbox( hwndDlg,IDC_LOCAL_GROUPS,DCTVS_Security_TranslateLocalGroups);
checkbox( hwndDlg,IDC_USER_PROFILES,DCTVS_Security_TranslateUserProfiles);
checkbox( hwndDlg,IDC_REGISTRY,DCTVS_Security_TranslateRegistry);
if (IsDlgButtonChecked(hwndDlg,IDC_FILES) ||
(IsDlgButtonChecked(hwndDlg,IDC_SHARES) ||
(IsDlgButtonChecked(hwndDlg,IDC_PRINTERS) ||
(IsDlgButtonChecked(hwndDlg,IDC_USER_RIGHTS) ||
(IsDlgButtonChecked(hwndDlg,IDC_LOCAL_GROUPS) ||
(IsDlgButtonChecked(hwndDlg,IDC_USER_PROFILES) ||
(IsDlgButtonChecked(hwndDlg,IDC_REGISTRY))))))))
{
pdata->translateObjects=true;
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_TRANSLATION_MODE);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_TRANSLATION_MODE);
return TRUE;
}
else
{
pdata->translateObjects=false;
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_REBOOT);
return TRUE;
}
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
break;
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(TRANSLATE_OBJECTS_HELP, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(TRANSLATE_OBJECTS_HELP, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK
IntUndoProc(
IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
IPerformMigrationTaskPtr w;
HRESULT hr = w.CreateInstance(CLSID_Migrator);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
CString s;
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
BSTR desc = NULL;
w->GetTaskDescription(IUnknownPtr(pVarSetUndo), &desc);
s = desc;
SysFreeString(desc);
SetDlgItemText(hwndDlg, IDC_UNDO_TASK,s);
break;
}
case WM_HELP :
{
SharedHelp(UNDO_HELP, hwndDlg);
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
{
PostMessage(GetParent(hwndDlg), PSM_SETWIZBUTTONS, 0, PSWIZB_BACK|PSWIZB_NEXT);
break;
}
case PSN_WIZNEXT :
{
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
//set up the undo task
IUnknownPtr pUnk;
w->GetUndoTask(IUnknownPtr(pVarSetUndo), &pUnk);
if (pVarSet)
{
pVarSet->Release();
pVarSet = NULL;
}
pUnk->QueryInterface(IID_IVarSet,(void**)&pVarSet);
put(DCTVS_Options_AppendToLogs,yes);
_bstr_t s1=get(DCTVS_Options_SourceDomain);
_bstr_t t1=get(DCTVS_Options_TargetDomain);
CString s= (WCHAR const*) s1;
CString t= (WCHAR const*) t1;
HRESULT hr=S_OK;
_bstr_t text=get(DCTVS_Options_Wizard);
pdata->sameForest=CheckSameForest(t,s,hr);
if (FAILED(hr))
{
ErrorWrapper4(hwndDlg,hr,s);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_UNDO);
return TRUE;
}
else
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_END_UNDO);
return TRUE;
}
break;
}
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(UNDO_HELP, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK EndDlgProc (
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
IPerformMigrationTaskPtr w;
CString s;
HRESULT hr = w.CreateInstance(CLSID_Migrator);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{ pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
HWND hwndControl = GetDlgItem(hwndDlg, IDC_END_TITLE);
SetWindowFont(hwndControl,pdata->hTitleFont, TRUE);
break;
}
case WM_HELP :
{
SharedHelp(CONFIRMATION_HELP, hwndDlg);
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
{
BSTR desc = NULL;
w->GetTaskDescription(IUnknownPtr(pVarSet), &desc);
s= desc;
SysFreeString(desc);
SetDlgItemText(hwndDlg,IDC_SETTINGS,s);
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_FINISH);
break;
}
case PSN_WIZBACK :{
if (migration==w_reporting)
{
_bstr_t text= get(DCTVS_Reports_AccountReferences);
if (!UStrICmp(text ,(WCHAR const *) yes))
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_SELECTION1);
return TRUE;
}
else
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_OPTIONS_REPORTING);
return TRUE;
}
}
else if (migration==w_account)
{
if (pdata->someService)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_SA_INFO);
return TRUE;
}
else
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_RENAMING);
return TRUE;
}
}
else if (migration==w_security)
{
if (pdata->translateObjects)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_TRANSLATION_MODE);
return TRUE;
}
else
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_TRANSLATION);
return TRUE;
}
}
else if (migration==w_groupmapping)
{
if (!pdata->IsSidHistoryChecked)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_OPTIONS_GROUPMAPPING);
return TRUE;
}
}
else if (migration==w_group)
{
if (pdata->migratingGroupMembers && !pdata->sameForest)
{
if (pdata->someService)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_SA_INFO);
return TRUE;
}
else
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_DISABLE);
return TRUE;
}
}
else
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_RENAMING);
return TRUE;
}
}
else if (migration==w_undo)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_UNDO);
return TRUE;
}
break;
}
case PSN_WIZFINISH :
{
if (migration == w_computer)
populateTime(pdata->rebootDelay,pdata->servers);
if (migration == w_reporting)
populateReportingTime();
if (migration!=w_service)
{
try
{CWaitCursor w2;
w->PerformMigrationTask(IUnknownPtr(pVarSet),(LONG_PTR)hwndDlg);
}
catch (const _com_error& e)
{
if (e.Error() == MIGRATOR_E_PROCESSES_STILL_RUNNING)
{
CString str;
str.LoadString(IDS_ADMT_PROCESSES_STILL_RUNNING);
::AfxMessageBox(str);
}
else
{
_bstr_t bstrDescription;
try
{
bstrDescription = e.Description();
}
catch (_com_error& ce)
{
}
if (bstrDescription.length())
::AfxMessageBox(bstrDescription);
else
::AfxMessageBox(e.ErrorMessage());
}
break;
}
}
if (migration!=w_undo)
handleDB();
break;
}
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_RESET :
break;
case PSN_HELP :
{
SharedHelp(CONFIRMATION_HELP, hwndDlg);
break;
}
default :
break;
}
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK IntroDlgProc (
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{ IPerformMigrationTaskPtr w;
CString s;
HRESULT hr = w.CreateInstance(CLSID_Migrator);
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
HWND hwndControl = GetDlgItem(hwndDlg, IDC_BEGIN_TITLE);
SetWindowFont(hwndControl,pdata->hTitleFont, TRUE);
break;
}
case WM_HELP :
{
SharedHelp(WELCOME_HELP, hwndDlg);
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
{
BSTR desc = NULL;
w->GetTaskDescription(IUnknownPtr(pVarSet), &desc);
s= desc;
SysFreeString(desc);
SetDlgItemText(hwndDlg,IDC_SETTINGS,s);
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_NEXT);
break;
}
case PSN_WIZNEXT :
{
if (migration==w_undo)
{
_bstr_t b=pVarSetUndo->get(GET_BSTR(DCTVS_Options_SourceDomain));
CString s=(WCHAR *) b;
_bstr_t strDc;
CString sourceDomainController;
DWORD res = GetAnyDcName5(s, strDc);
if (res!=NO_ERROR)
{
ErrorWrapper3(hwndDlg,HRESULT_FROM_WIN32(res),s);
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_INTRO_UNDO);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_INTRO_UNDO);
return TRUE;
}
else
{
sourceDomainController = (LPCTSTR)strDc;
}
bool isNt4;
hr =validDomain(sourceDomainController,isNt4);
if (!SUCCEEDED(hr))
{
ErrorWrapper4(hwndDlg,hr,s);
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_INTRO_UNDO);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_INTRO_UNDO);
return TRUE;
}
if(!isNt4)
{HRESULT hr;
if (!targetNativeMode(b,hr))
{
MessageBoxWrapper(hwndDlg,IDS_MSG_MESSAGE9,IDS_MSG_ERROR);
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_INTRO_UNDO);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_INTRO_UNDO);
return TRUE;
}
}
}
break;
}
case PSN_QUERYCANCEL :
{
GetError(0); //clear any old com errors
break;
}
case PSN_RESET :
break;
case PSN_HELP :
{
SharedHelp(WELCOME_HELP, hwndDlg);
break;
}
default :
break;
}
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK IntDomainSelectionProc (
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
HRESULT hr;
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
//TRACE1("Message:%ld\n",uMsg);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
HWND hLC4= GetDlgItem(hwndDlg,IDC_EDIT_DOMAIN);
sourceDrop.Attach(hLC4);
HWND hLC5= GetDlgItem(hwndDlg,IDC_EDIT_DOMAIN2);
targetDrop.Attach(hLC5);
populateList(sourceDrop);
populateList(targetDrop);
initeditbox( hwndDlg,IDC_EDIT_DOMAIN,DCTVS_Options_SourceDomain);
initeditbox( hwndDlg, IDC_EDIT_DOMAIN2,DCTVS_Options_TargetDomain);
// SetDlgItemText(hwndDlg,IDC_EDIT_DOMAIN,L"MCSDEV");
// SetDlgItemText(hwndDlg,IDC_EDIT_DOMAIN2,L"DEVRAPTORW2K");
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
break;
case PSN_WIZNEXT :
{
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
CString sourceDomainController=L"";
CString targetDomainController=L"";
if (IsDlgItemEmpty(hwndDlg,IDC_EDIT_DOMAIN) ||
IsDlgItemEmpty(hwndDlg,IDC_EDIT_DOMAIN2) )
{
MessageBoxWrapper(hwndDlg,IDS_MSG_DOMAIN,IDS_MSG_INPUT);
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_DOMAIN_SELECTION);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_DOMAIN_SELECTION);
return TRUE;
}
else if ((migration!=w_security) && (!verifyprivs(hwndDlg,sourceDomainController,targetDomainController,pdata)))
{
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_DOMAIN_SELECTION);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_DOMAIN_SELECTION);
return TRUE;
}
else if ((migration==w_security) && (!verifyprivsSTW(hwndDlg,sourceDomainController,targetDomainController,pdata)))
{
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_DOMAIN_SELECTION);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_DOMAIN_SELECTION);
return TRUE;
}
else
{
//
// If performing an intra-forest task.
//
if (pdata->sameForest)
{
//
// If performing an intra-forest move operation verify
// caller's account may be delegated.
//
switch (migration)
{
case w_account:
case w_group:
case w_computer:
case w_groupmapping:
case w_undo:
{
if (VerifyCallerDelegated(hwndDlg, pdata) == false)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_DOMAIN_SELECTION);
return TRUE;
}
break;
}
default:
break;
}
//
// Remove SID history credentials to prevent intra-forest operations
// from attempting to use old credentials especially without a password.
//
put(DCTVS_AccountOptions_SidHistoryCredentials_Domain, L"");
put(DCTVS_AccountOptions_SidHistoryCredentials_UserName, L"");
}
if (sourceDC != sourceDomainController)
{
sourceDC = sourceDomainController;
DCList.RemoveAll();
}
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
if (migration==w_groupmapping && pdata->sameForest)
{
MessageBoxWrapper(hwndDlg,IDS_MSG_GROUPMAPPING,IDS_MSG_ERROR);
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_DOMAIN_SELECTION);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_DOMAIN_SELECTION);
return TRUE;
}
put(DCTVS_Options_SourceDomain, GetSourceDomainName());
put(DCTVS_Options_SourceDomainDns, GetSourceDomainNameDns());
put(DCTVS_Options_SourceDomainFlat, GetSourceDomainNameFlat());
put(DCTVS_Options_TargetDomain, GetTargetDomainName());
put(DCTVS_Options_TargetDomainDns, GetTargetDomainNameDns());
put(DCTVS_Options_TargetDomainFlat, GetTargetDomainNameFlat());
clearCredentialsName = pdata->newSource;
//
// If inter-forest account migration then verify that the
// default system properties exclusion list has been set.
//
if (pdata->sameForest == false)
{
switch (migration)
{
case w_account:
case w_group:
case w_computer:
case w_groupmapping:
{
SetDefaultExcludedSystemProperties(hwndDlg);
break;
}
default:
break;
}
}
if (migration!=w_trust &&
(migration!=w_retry &&
(migration!=w_undo &&
(migration!=w_exchangeDir &&
(migration!=w_exchangeSrv)))))
{
if ((migration==w_service) || (migration==w_reporting))
{
hr =InitObjectPicker2(pDsObjectPicker,true,sourceDomainController,pdata->sourceIsNT4);
}
else if (migration==w_security)
{
hr =InitObjectPicker2(pDsObjectPicker,true,targetDomainController,false);
}
else
{
hr =InitObjectPicker(pDsObjectPicker,true,sourceDomainController,pdata->sourceIsNT4);
}
if (FAILED(hr))
{
MessageBoxWrapper(hwndDlg,IDS_MSG_OBJECTPICKER_SOURCE,IDS_MSG_ERROR);
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_DOMAIN_SELECTION);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_DOMAIN_SELECTION);
return TRUE;
}
if (migration==w_groupmapping)
{
hr = InitObjectPicker(pDsObjectPicker2,false,targetDomainController,pdata->sourceIsNT4);
if (FAILED(hr))
{
MessageBoxWrapper(hwndDlg,IDS_MSG_OBJECTPICKER_TARGET,IDS_MSG_ERROR);
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_DOMAIN_SELECTION);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_DOMAIN_SELECTION);
return TRUE;
}
}
}
}
break;
}
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(DOMAIN_SELECTION_HELP, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(DOMAIN_SELECTION_HELP, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK IntDisableProc (
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
//init the sidhistory checkbox
if (migration==w_account)
{
CString toformat;
toformat.LoadString(IDS_SIDHISTORY_CTRL_TEXT);
SetDlgItemText(hwndDlg,IDC_ROAMING_OR_SIDHISTORY,toformat);
initcheckbox( hwndDlg,IDC_ROAMING_OR_SIDHISTORY,DCTVS_AccountOptions_AddSidHistory);
if (pdata->sameForest)
{
CheckDlgButton(hwndDlg,IDC_ROAMING_OR_SIDHISTORY,true);
disable(hwndDlg,IDC_ROAMING_OR_SIDHISTORY);
}
}
else //else init the box for roaming profile
{
CString toformat;
toformat.LoadString(IDS_ROAMING_PROFILE_CTRL_TEXT);
SetDlgItemText(hwndDlg,IDC_ROAMING_OR_SIDHISTORY,toformat);
initcheckbox( hwndDlg,IDC_ROAMING_OR_SIDHISTORY,DCTVS_AccountOptions_TranslateRoamingProfiles);
}
initdisablesrcbox(hwndDlg);
inittgtstatebox(hwndDlg);
break;
}
case WM_COMMAND:
{
switch(LOWORD (wParam))
{
case IDC_SRC_EXPIRE_ACCOUNTS :
{
if (IsDlgButtonChecked(hwndDlg,IDC_SRC_EXPIRE_ACCOUNTS))
{
enable(hwndDlg,IDC_yo);
enable(hwndDlg,IDC_DATE);
enable(hwndDlg,IDC_TEXT);
}
else
{
disable(hwndDlg,IDC_yo);
disable(hwndDlg,IDC_DATE);
disable(hwndDlg,IDC_TEXT);
}
break;
}
default :
break;
}
switch(HIWORD (wParam)){
case EN_SETFOCUS :
bChangeOnFly=true;
break;
case EN_KILLFOCUS :
bChangeOnFly=false;
break;
case EN_CHANGE:
{
if ((!bChangeOnFly) || (LOWORD(wParam) != IDC_yo))
break;
CString s;
GetDlgItemText(hwndDlg,IDC_yo,s.GetBuffer(1000),1000);
s.ReleaseBuffer();
//make sure all chars are digits
bool bInvalid = false;
int ndx=0;
while ((ndx < s.GetLength()) && (!bInvalid))
{
if (!iswdigit(s[ndx]))
bInvalid = true;
ndx++;
}
if (bInvalid)
{
//for invalid days, blank out the date
SetDlgItemText(hwndDlg,IDC_DATE,L"");
}
else //else continue checking for validity
{
long ndays = _wtol(s);
if (((ndays <= THREE_YEARS) && (ndays >= 1)) ||
(!UStrICmp(s,L"0")))
calculateDate(hwndDlg,s);
else
{
//for invalid days, blank out the date
SetDlgItemText(hwndDlg,IDC_DATE,L"");
}
}
break;
}
default :
break;
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
break;
case PSN_WIZNEXT :
{
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
checkbox(hwndDlg,IDC_SRC_DISABLE_ACCOUNTS,DCTVS_AccountOptions_DisableSourceAccounts);
checkbox(hwndDlg,IDC_TGT_DISABLE_ACCOUNTS,DCTVS_AccountOptions_DisableCopiedAccounts);
checkbox(hwndDlg,IDC_TGT_SAME_AS_SOURCE,DCTVS_AccountOptions_TgtStateSameAsSrc);
_variant_t varX;
if (IsDlgButtonChecked(hwndDlg,IDC_SRC_EXPIRE_ACCOUNTS))
{
CString s;
GetDlgItemText(hwndDlg,IDC_yo,s.GetBuffer(1000),1000);
s.ReleaseBuffer();
//make sure all chars are digits
int ndx=0;
while (ndx < s.GetLength())
{
if (!iswdigit(s[ndx]))
{
MessageBoxWrapper(hwndDlg,IDS_MSG_TIME,IDS_MSG_ERROR);
SetFocus(GetDlgItem(hwndDlg, IDC_yo));
SendDlgItemMessage(hwndDlg, IDC_yo, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
ndx++;
}
long ndays = _wtol(s);
if (((ndays <= THREE_YEARS) && (ndays >= 1)) ||
(!UStrICmp(s,L"0")))
{
varX = (LPCTSTR)s;
put(DCTVS_AccountOptions_ExpireSourceAccounts,varX);
}
else
{
MessageBoxWrapper(hwndDlg,IDS_MSG_TIME,IDS_MSG_ERROR);
SetFocus(GetDlgItem(hwndDlg, IDC_yo));
SendDlgItemMessage(hwndDlg, IDC_yo, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
}
else
{
varX = L"";
put(DCTVS_AccountOptions_ExpireSourceAccounts,varX);
}
if (migration==w_account)
{
if (IsDlgButtonChecked(hwndDlg,IDC_ROAMING_OR_SIDHISTORY) && !pdata->sameForest)
{
HRESULT hr = doSidHistory(hwndDlg);
if (SUCCEEDED(hr))
{
pVarSet->put(GET_BSTR(DCTVS_Options_TargetServerOverride), GetTargetDcNameFlat());
pVarSet->put(GET_BSTR(DCTVS_Options_TargetServerOverrideDns), GetTargetDcNameDns());
}
else
{
if (hr != E_ABORT)
{
ErrorWrapper(hwndDlg, hr);
}
CheckDlgButton(hwndDlg, IDC_ROAMING_OR_SIDHISTORY, false);
}
}
checkbox(hwndDlg,IDC_ROAMING_OR_SIDHISTORY,DCTVS_AccountOptions_AddSidHistory);
pdata->IsSidHistoryChecked =(IsDlgButtonChecked( hwndDlg,IDC_ROAMING_OR_SIDHISTORY)==BST_CHECKED)?true:false;
if (!pdata->sameForest && pdata->IsSidHistoryChecked)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_CREDENTIALS);
return TRUE;
}
else
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT,IDD_OPTIONS);
return TRUE;
}
}//end if user migration
else //else set or clear the translate roaming profile key
checkbox( hwndDlg,IDC_ROAMING_OR_SIDHISTORY,DCTVS_AccountOptions_TranslateRoamingProfiles);
if (someServiceAccounts(pdata->accounts,hwndDlg))
{
pdata->someService=true;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_SA_INFO);
return TRUE;
}
else
{
pdata->someService=false;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_END_GROUP);
return TRUE;
}
break;
}
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(ACCOUNTTRANSITION_OPTION, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(ACCOUNTTRANSITION_OPTION, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK IntTranslationModeProc (
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
inittranslationbox( hwndDlg,
IDC_TRANSLATION_MODE_REPLACE,IDC_TRANSLATION_MODE_ADD,IDC_TRANSLATION_MODE_REMOVE,
DCTVS_Security_TranslationMode,pdata->sameForest);
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
break;
case PSN_WIZNEXT :
{
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
translationbox( hwndDlg,
IDC_TRANSLATION_MODE_REPLACE,IDC_TRANSLATION_MODE_ADD,IDC_TRANSLATION_MODE_REMOVE,
DCTVS_Security_TranslationMode);
//if not add mode and user rights translation selected previously, them
//post an informational message
_bstr_t TransUserRights = get(DCTVS_Security_TranslateUserRights);
if ((!IsDlgButtonChecked( hwndDlg, IDC_TRANSLATION_MODE_ADD)) &&
(!UStrCmp(TransUserRights,(WCHAR const *) yes)))
{
CString message;
CString title;
message.LoadString(IDS_MSG_TRANSUR_ADDONLY);
title.LoadString(IDS_MSG_TRANSUR_TITLE);
MessageBox(hwndDlg,message,title,MB_OK | MB_ICONINFORMATION);
}
break;
}
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(SECURITY_OPTION_HELP, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(SECURITY_OPTION_HELP, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK IntOptionsGroupMappingProc(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
initcheckbox( hwndDlg,IDC_COPY_USER_RIGHTS,DCTVS_AccountOptions_UpdateUserRights);
initcheckbox( hwndDlg,IDC_ADD_SID_HISTORY,DCTVS_AccountOptions_AddSidHistory);
if (pdata->sameForest)
{
CheckDlgButton(hwndDlg,IDC_ADD_SID_HISTORY,true);
disable(hwndDlg,IDC_ADD_SID_HISTORY);
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
break;
case PSN_WIZNEXT :
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
checkbox( hwndDlg,IDC_COPY_USER_RIGHTS,DCTVS_AccountOptions_UpdateUserRights);
if (IsDlgButtonChecked(hwndDlg,IDC_ADD_SID_HISTORY) && !pdata->sameForest)
{
HRESULT hr = doSidHistory(hwndDlg);
if (SUCCEEDED(hr))
{
pVarSet->put(GET_BSTR(DCTVS_Options_TargetServerOverride), GetTargetDcNameFlat());
pVarSet->put(GET_BSTR(DCTVS_Options_TargetServerOverrideDns), GetTargetDcNameDns());
}
else
{
if (hr != E_ABORT)
{
ErrorWrapper(hwndDlg, hr);
}
CheckDlgButton(hwndDlg, IDC_ADD_SID_HISTORY, false);
}
}
checkbox( hwndDlg,IDC_ADD_SID_HISTORY,DCTVS_AccountOptions_AddSidHistory);
pdata->IsSidHistoryChecked =(IsDlgButtonChecked( hwndDlg,IDC_ADD_SID_HISTORY)==BST_CHECKED)?true:false;
if (!pdata->sameForest && pdata->IsSidHistoryChecked)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_CREDENTIALS);
return TRUE;
}
else
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT,IDD_END_GROUPMAPPING);
return TRUE;
}
break;
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(GROUP_OPTION_HELP, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(GROUP_OPTION_HELP, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK IntGroupOptionsProc (
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
initnoncollisionrename(hwndDlg);
initcheckbox( hwndDlg,IDC_COPY_GROUP_MEMBERS,DCTVS_AccountOptions_CopyContainerContents);
initcheckbox( hwndDlg,IDC_COPY_USER_RIGHTS,DCTVS_AccountOptions_UpdateUserRights);
initcheckbox( hwndDlg,IDC_ADD_SID_HISTORY,DCTVS_AccountOptions_AddSidHistory);
initcheckbox( hwndDlg,IDC_REMIGRATE_OBJECTS,DCTVS_AccountOptions_IncludeMigratedAccts);
initcheckbox( hwndDlg,IDC_FIX_MEMBERSHIP,DCTVS_AccountOptions_FixMembership);
if (IsDlgButtonChecked(hwndDlg,IDC_COPY_GROUP_MEMBERS))
{
pdata->memberSwitch=true;
enable(hwndDlg,IDC_REMIGRATE_OBJECTS);
}
else
{
disable(hwndDlg,IDC_REMIGRATE_OBJECTS);
}
if (pdata->sameForest)
{
CheckDlgButton(hwndDlg,IDC_ADD_SID_HISTORY,true);
disable(hwndDlg,IDC_ADD_SID_HISTORY);
CheckDlgButton(hwndDlg,IDC_FIX_MEMBERSHIP,true);
disable(hwndDlg,IDC_FIX_MEMBERSHIP);
}
if (migration==w_group && pdata->sameForest)
{
CheckDlgButton(hwndDlg,IDC_REMIGRATE_OBJECTS,false);
disable(hwndDlg,IDC_REMIGRATE_OBJECTS);
}
break;
}
case WM_COMMAND:
{
switch(LOWORD (wParam))
{
case IDC_COPY_GROUP_MEMBERS:
{
pdata->memberSwitch=(!pdata->memberSwitch);
if (migration!=w_group)
pdata->memberSwitch ? enable(hwndDlg,IDC_REMIGRATE_OBJECTS):disable(hwndDlg,IDC_REMIGRATE_OBJECTS);
else if (migration==w_group && !pdata->sameForest)
pdata->memberSwitch ? enable(hwndDlg,IDC_REMIGRATE_OBJECTS):disable(hwndDlg,IDC_REMIGRATE_OBJECTS);
bChangedMigrationTypes=true;
break;
}
case IDC_RADIO_NONE :
{
disable(hwndDlg,IDC_PRE);
disable(hwndDlg,IDC_SUF);
break;
}
case IDC_RADIO_PRE :
{
enable(hwndDlg,IDC_PRE);
disable(hwndDlg,IDC_SUF);
CheckDlgButton(hwndDlg,IDC_RADIO_NONE,false);
CheckDlgButton(hwndDlg,IDC_RADIO_SUF,false);
SetFocus(GetDlgItem(hwndDlg, IDC_PRE));
SendDlgItemMessage(hwndDlg, IDC_PRE, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
break;
}
case IDC_RADIO_SUF :
{
disable(hwndDlg,IDC_PRE);
enable(hwndDlg,IDC_SUF);
CheckDlgButton(hwndDlg,IDC_RADIO_NONE,false);
CheckDlgButton(hwndDlg,IDC_RADIO_PRE,false);
SetFocus(GetDlgItem(hwndDlg, IDC_SUF));
SendDlgItemMessage(hwndDlg, IDC_SUF, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
break;
}
default :
break;
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
break;
case PSN_WIZNEXT :
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
checkbox( hwndDlg,IDC_COPY_GROUP_MEMBERS,DCTVS_AccountOptions_CopyContainerContents);
checkbox( hwndDlg,IDC_COPY_GROUP_MEMBERS,DCTVS_AccountOptions_CopyUsers);
checkbox( hwndDlg,IDC_COPY_USER_RIGHTS,DCTVS_AccountOptions_UpdateUserRights);
checkbox( hwndDlg,IDC_FIX_MEMBERSHIP,DCTVS_AccountOptions_FixMembership);
if (IsDlgButtonChecked(hwndDlg,IDC_COPY_GROUP_MEMBERS) && pdata->sameForest)
{
CString yo;
yo.LoadString(IDS_GRATUITIOUS_MESSAGE2);
CString warning;
warning.LoadString(IDS_MSG_WARNING);
MessageBox(hwndDlg,yo,warning,MB_OK| MB_ICONINFORMATION);
}
if (IsDlgButtonChecked(hwndDlg,IDC_ADD_SID_HISTORY) && !pdata->sameForest)
{
HRESULT hr = doSidHistory(hwndDlg);
if (SUCCEEDED(hr))
{
pVarSet->put(GET_BSTR(DCTVS_Options_TargetServerOverride), GetTargetDcNameFlat());
pVarSet->put(GET_BSTR(DCTVS_Options_TargetServerOverrideDns), GetTargetDcNameDns());
}
else
{
if (hr != E_ABORT)
{
ErrorWrapper(hwndDlg, hr);
}
CheckDlgButton(hwndDlg, IDC_ADD_SID_HISTORY, false);
}
}
checkbox( hwndDlg,IDC_ADD_SID_HISTORY,DCTVS_AccountOptions_AddSidHistory);
pdata->IsSidHistoryChecked =(IsDlgButtonChecked( hwndDlg,IDC_ADD_SID_HISTORY)==BST_CHECKED)?true:false;
if (IsDlgButtonChecked(hwndDlg,IDC_COPY_GROUP_MEMBERS))
{
checkbox( hwndDlg,IDC_REMIGRATE_OBJECTS,DCTVS_AccountOptions_IncludeMigratedAccts);
pdata->migratingGroupMembers=true;
}
else
{
pdata->migratingGroupMembers=false;
}
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
if ( !noncollisionrename(hwndDlg))
{
int nID = IDC_PRE;
MessageBoxWrapperFormat1(hwndDlg,IDS_MSG_INVALIDCHARS,IDS_INVALID_STRING,IDS_MSG_INPUT);
//set focus on invalid string
if (IsDlgButtonChecked(hwndDlg,IDC_RADIO_SUF))
nID = IDC_SUF;
SetFocus(GetDlgItem(hwndDlg, nID));
SendDlgItemMessage(hwndDlg, nID, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
if (pdata->sourceIsNT4 || pdata->sameForest)
{
if (!pdata->sameForest && pdata->IsSidHistoryChecked)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_CREDENTIALS);
return TRUE;
}
else
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT,IDD_RENAMING);
return TRUE;
}
}
break;
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(GROUP_OPTION_HELP, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(GROUP_OPTION_HELP, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK IntExchangeSelectionProc (
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
initeditbox( hwndDlg,IDC_EXCHANGE_SERVER,DCTVS_Security_TranslateContainers);
break;
}
case WM_COMMAND:
{
switch(HIWORD(wParam))
{
case EN_CHANGE :
{
enableNextIfNecessary(hwndDlg,IDC_EXCHANGE_SERVER);
break;
}
default:
break;
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
IsDlgItemEmpty(hwndDlg,IDC_EXCHANGE_SERVER) ?
PostMessage(GetParent(hwndDlg), PSM_SETWIZBUTTONS, 0, PSWIZB_BACK):
PostMessage(GetParent(hwndDlg), PSM_SETWIZBUTTONS, 0, PSWIZB_BACK|PSWIZB_NEXT);
break;
case PSN_WIZNEXT :
{
CWaitCursor ex;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
CString so;GetDlgItemText(hwndDlg,IDC_EXCHANGE_SERVER,so.GetBuffer(1000),1000);so.ReleaseBuffer();
SERVER_INFO_100 * servInfo = NULL;
so.TrimLeft();so.TrimRight();
if (NetServerGetInfo(so.GetBuffer(1000),100,(LPBYTE *)&servInfo)!=NERR_Success)
{
so.ReleaseBuffer();
MessageBoxWrapper(hwndDlg,IDS_MSG_INVALIDEXCHANGE,IDS_MSG_ERROR);
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_EXCHANGE_SELECTION);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_EXCHANGE_SELECTION);
if ( servInfo )
{
NetApiBufferFree(servInfo);
}
return TRUE;
}
else
so.ReleaseBuffer();
if ( servInfo )
{
NetApiBufferFree(servInfo);
}
editbox( hwndDlg,IDC_EXCHANGE_SERVER,DCTVS_Security_TranslateContainers);
break;
}
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(EXCHANGE_SERVER_SELECTION, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(EXCHANGE_SERVER_SELECTION, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK IntCommitProc (
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
CheckRadioButton(hwndDlg,IDC_CHANGEIT,IDC_DONTCHANGE,IDC_DONTCHANGE);
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
PostMessage(GetParent(hwndDlg), PSM_SETWIZBUTTONS, 0, PSWIZB_BACK|PSWIZB_NEXT);
break;
case PSN_WIZNEXT :
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
checkbox( hwndDlg,IDC_DONTCHANGE,DCTVS_Options_NoChange);
break;
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(COMMIT_HELP, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(COMMIT_HELP, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK IntOuSelectionProc (
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
break;
}
case WM_COMMAND:
{
switch(LOWORD (wParam))
{
case IDC_BROWSE :
{
HMODULE hMod = NULL;
hMod = LoadLibrary(L"dsuiext.dll");
if ( hMod )
{
WCHAR sDomPath[320];
wsprintf(sDomPath, L"LDAP://%s", GetTargetDomainNameDns());
DsBrowseForContainerX = (DSBROWSEFORCONTAINER)GetProcAddress(hMod, "DsBrowseForContainerW");
WCHAR * sContPath, * sContName;
if (DsBrowseForContainerX && !BrowseForContainer(hwndDlg, sDomPath, &sContPath, &sContName) )
{
SetDlgItemText(hwndDlg, IDC_TARGET_OU, sContPath);
CoTaskMemFree(sContPath);
CoTaskMemFree(sContName);
}
FreeLibrary(hMod);
}
break;
}
default:
break;
}
switch(HIWORD(wParam))
{
case EN_CHANGE :
{
enableNextIfNecessary(hwndDlg,IDC_TARGET_OU);
break;
}
default:
break;
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
pdata->resetOUPATH ? SetDlgItemText( hwndDlg,IDC_TARGET_OU,L""): initeditbox( hwndDlg,IDC_TARGET_OU,DCTVS_Options_OuPath);
pdata->resetOUPATH =false;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
enableNextIfNecessary(hwndDlg,IDC_TARGET_OU);
break;
case PSN_WIZNEXT :
{CWaitCursor ex;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
//since group, user, and computer migrations only bring up this dialog, we will
//use this occasion to clear the exclude properties flag if the source
//domain is NT 4.0
if (pdata->sourceIsNT4)
put(DCTVS_AccountOptions_ExcludeProps, no);
CString c,d,toenter;
GetDlgItemText(hwndDlg,IDC_TARGET_OU,c.GetBuffer(1000),1000);
c.ReleaseBuffer();
d=c.Left(7);d.TrimLeft();d.TrimRight();
if (!d.CompareNoCase(L"LDAP://"))
{
toenter=c;
}
else
{
toenter.Format(L"LDAP://%s/%s",GetTargetDomainNameDns(),c);
SetDlgItemText(hwndDlg, IDC_TARGET_OU, (LPCTSTR)toenter);
}
IADsObjectOptions *pOps;
BOOL bFromTargetDomain = FALSE;
HRESULT hr = ADsGetObject(
toenter,
IID_IADsObjectOptions,
(void**)&pOps);
if (SUCCEEDED(hr))
{
VARIANT var;
VariantInit(&var);
hr = pOps->GetOption(ADS_OPTION_SERVERNAME, &var);
if (SUCCEEDED(hr))
{
_bstr_t serverName = V_BSTR(&var);
// make sure that the server name is from target domain
DOMAIN_CONTROLLER_INFO *pDomCtrlInfo = NULL;
GUID zeroGuid = { 0 };
DWORD rc = DsGetDcName(
(WCHAR*)serverName,
NULL,
NULL,
NULL,
DS_DIRECTORY_SERVICE_PREFERRED,
&pDomCtrlInfo);
if (rc == NO_ERROR
&& pDomCtrlInfo->DomainGuid != zeroGuid)
{
DOMAIN_CONTROLLER_INFO *pTargetDomCtrlInfo = NULL;
rc = DsGetDcName(
NULL,
GetTargetDomainName(),
NULL,
NULL,
DS_DIRECTORY_SERVICE_PREFERRED,
&pTargetDomCtrlInfo);
if (rc == NO_ERROR
&& pTargetDomCtrlInfo->DomainGuid != zeroGuid)
{
if (pDomCtrlInfo->DomainGuid == pTargetDomCtrlInfo->DomainGuid)
bFromTargetDomain = TRUE;
}
if (pTargetDomCtrlInfo != NULL)
NetApiBufferFree(pTargetDomCtrlInfo);
}
if (pDomCtrlInfo != NULL)
NetApiBufferFree(pDomCtrlInfo);
}
VariantClear(&var);
pOps->Release();
}
if (!bFromTargetDomain)
{
//if buffer was big enough, say invalid OU
long len = toenter.GetLength();
if (len < 999)
{
MessageBoxWrapper(hwndDlg,IDS_MSG_INVALIDOU,IDS_MSG_ERROR);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_OU_SELECTION);
pdata->resetOUPATH =true;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
return TRUE;
}
else //else if buffer too small, tell user OU path too long
{
MessageBoxWrapper(hwndDlg,IDS_OU_TOO_LONG,IDS_MSG_ERROR);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_OU_SELECTION);
pdata->resetOUPATH =true;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
return TRUE;
}
}
editbox( hwndDlg,IDC_TARGET_OU,DCTVS_Options_OuPath);
if (pdata->sameForest&& migration==w_account)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_OPTIONS);
return TRUE;
}
break;
}
case PSN_WIZBACK :
editbox( hwndDlg,IDC_TARGET_OU,DCTVS_Options_OuPath);
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(OU_SELECTION_HELP, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(OU_SELECTION_HELP, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK IntCredentialsProc (
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
initeditbox( hwndDlg,IDC_CREDENTIALS_DOMAIN,DCTVS_AccountOptions_SidHistoryCredentials_Domain);
if (!clearCredentialsName) initeditbox( hwndDlg, IDC_CREDENTIALS_USERNAME,DCTVS_AccountOptions_SidHistoryCredentials_UserName );
initeditboxPassword(hwndDlg, IDC_CREDENTIALS_PASSWORD, DCTVS_AccountOptions_SidHistoryCredentials_Password);
enable(hwndDlg,IDC_CREDENTIALS_DOMAIN);
enable(hwndDlg,IDC_CREDENTIALS_USERNAME);
enable(hwndDlg,IDC_CREDENTIALS_PASSWORD);
SetDlgItemText(hwndDlg,IDC_CREDENTIALS_DOMAIN,GetSourceDomainNameFlat());
if (pdata->sameForest)
{
SetDlgItemText(hwndDlg,IDC_MYTITLE,GET_CSTRING(IDS_MYTITLE2));
SetDlgItemText(hwndDlg,IDC_CREDENTIALS_DOMAIN,GetTargetDomainNameFlat());
}
if (migration==w_exchangeDir)
SetDlgItemText(hwndDlg,IDC_MYTITLE,GET_CSTRING(IDS_MYTITLE3));
break;
}
case WM_COMMAND:
{
switch(HIWORD(wParam))
{
case EN_CHANGE :
{
if (enableNextIfNecessary(hwndDlg,IDC_CREDENTIALS_DOMAIN))
enableNextIfNecessary(hwndDlg,IDC_CREDENTIALS_USERNAME);
break;
}
case EN_KILLFOCUS:
{
if (GetDlgItem(hwndDlg,IDC_CREDENTIALS_USERNAME) == (HWND)lParam)
{
CString aUPNName, aUser=L"", aDomain=L"";
int index;
GetDlgItemText(hwndDlg,IDC_CREDENTIALS_USERNAME,aUPNName.GetBuffer(1000),1000);
aUPNName.ReleaseBuffer();
//if possibly listed in UPN format, extract username and domain from that UPN
//and convert to DNS domain name to its netbios name
if ((index = aUPNName.Find(L'@')) != -1)
{
if (GetDomainAndUserFromUPN(&*aUPNName, aDomain, aUser))
{
SetDlgItemText(hwndDlg,IDC_CREDENTIALS_DOMAIN,aDomain);
SetDlgItemText(hwndDlg,IDC_CREDENTIALS_USERNAME,aUser);
}
}
}
break;
}
default:
break;
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
if (enableNextIfNecessary(hwndDlg,IDC_CREDENTIALS_DOMAIN))
enableNextIfNecessary(hwndDlg,IDC_CREDENTIALS_USERNAME);
break;
case PSN_WIZNEXT :
{
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
CString dom,user,pass;
GetDlgItemText(hwndDlg,IDC_CREDENTIALS_DOMAIN,dom.GetBuffer(1000),1000);
GetDlgItemText(hwndDlg,IDC_CREDENTIALS_USERNAME,user.GetBuffer(1000),1000);
GetDlgItemText(hwndDlg,IDC_CREDENTIALS_PASSWORD,pass.GetBuffer(1000),1000);
dom.ReleaseBuffer(); user.ReleaseBuffer(); pass.ReleaseBuffer();
DWORD returncode = ERROR_SUCCESS;
// for exchange migration, we don't need to call VerifyPassword
// instead, we call VerifyExchangeServerCredential
if (migration != w_exchangeDir)
returncode = VerifyPassword(user, pass, dom);
else
{
returncode = VerifyExchangeServerCredential(hwndDlg, user, pass, dom);
}
SecureZeroMemory(pass.GetBuffer(pass.GetLength()), pass.GetLength() * sizeof(_TCHAR));
if (returncode == ERROR_SUCCESS)
{
editbox( hwndDlg,IDC_CREDENTIALS_DOMAIN,DCTVS_AccountOptions_SidHistoryCredentials_Domain);
editbox( hwndDlg, IDC_CREDENTIALS_USERNAME,DCTVS_AccountOptions_SidHistoryCredentials_UserName );
editboxPassword(hwndDlg, IDC_CREDENTIALS_PASSWORD, DCTVS_AccountOptions_SidHistoryCredentials_Password);
}
else
{
if (migration == w_exchangeDir)
{
// The VerifyExchangeServerCredential function displays a message box if an error occurs.
}
else if (returncode == ERROR_ACCESS_DENIED)
{
MessageBoxWrapper(hwndDlg, IDS_MSG_INVALID_SID_HISTORY_CREDENTIALS, IDS_MSG_ERROR);
}
else if (returncode == ERROR_INVALID_HANDLE)
{
MessageBoxWrapper(hwndDlg, IDS_MSG_INVALID_HANDLE, IDS_MSG_ERROR);
}
else
{
ErrorWrapper(hwndDlg,returncode);
}
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_CREDENTIALS);
return TRUE;
}
if (migration==w_undo)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_END_UNDO);
return TRUE;
}
break;
}
case PSN_WIZBACK :
{
if (pdata->sameForest && migration==w_account)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_OU_SELECTION);
return TRUE;
}
else if (migration==w_account)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_DISABLE);
return TRUE;
}
else if ((pdata->sourceIsNT4 || pdata->sameForest) && migration==w_group)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT,IDD_OPTIONS_GROUP);
return TRUE;
}
break;
}
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(CREDENTIALS_HELP, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(CREDENTIALS_HELP, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK IntRenameProc (
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
//find out if copy user's groups are being copied. If not then disable the
//replace existing group member checkbox
bool bCopyGroups = true;
_bstr_t strCopyGroups = get(DCTVS_AccountOptions_CopyMemberOf);
if (((!UStrCmp(strCopyGroups,(WCHAR const *) yes)) && (migration==w_account)) ||
(migration==w_group))
bCopyGroups = true;
else
bCopyGroups = false;
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
handleInitRename(hwndDlg, pdata->sameForest, bCopyGroups);
if (migration==w_computer)
{
CString yo;
yo.LoadString(IDS_COMPUTER_RENAME_TITLE);
SetDlgItemText(hwndDlg,IDC_THERENAMINGTITLE,yo);
}
if (IsDlgButtonChecked(hwndDlg, IDC_SKIP_CONFLICTING_ACCOUNTS))
{
pdata->renameSwitch=1;
disable(hwndDlg,IDC_REMOVE_EXISTING_USER_RIGHTS);
disable(hwndDlg,IDC_REPLACE_EXISTING_GROUP_MEMBERS);
disable(hwndDlg,IDC_REMOVE_EXISTING_LOCATION);
disable(hwndDlg,IDC_PREFIX);
disable(hwndDlg,IDC_SUFFIX);
disable(hwndDlg,IDC_RADIO_PREFIX);
disable(hwndDlg,IDC_RADIO_SUFFIX);
}
else if (IsDlgButtonChecked(hwndDlg, IDC_REPLACE_CONFLICTING_ACCOUNTS))
{
pdata->renameSwitch=2;
enable(hwndDlg,IDC_REMOVE_EXISTING_USER_RIGHTS);
enable(hwndDlg,IDC_REMOVE_EXISTING_LOCATION);
if ((migration!=w_computer) && (bCopyGroups))
enable(hwndDlg,IDC_REPLACE_EXISTING_GROUP_MEMBERS);
else
{
disable(hwndDlg,IDC_REPLACE_EXISTING_GROUP_MEMBERS);
CheckDlgButton( hwndDlg,IDC_REPLACE_EXISTING_GROUP_MEMBERS,false);
}
disable(hwndDlg,IDC_PREFIX);
disable(hwndDlg,IDC_SUFFIX);
disable(hwndDlg,IDC_RADIO_PREFIX);
disable(hwndDlg,IDC_RADIO_SUFFIX);
}
else
{
CheckDlgButton( hwndDlg,IDC_RENAME_CONFLICTING_ACCOUNTS,true);
pdata->renameSwitch=3;
disable(hwndDlg,IDC_REMOVE_EXISTING_USER_RIGHTS);
disable(hwndDlg,IDC_REPLACE_EXISTING_GROUP_MEMBERS);
disable(hwndDlg,IDC_REMOVE_EXISTING_LOCATION);
enable(hwndDlg,IDC_RADIO_PREFIX);
enable(hwndDlg,IDC_RADIO_SUFFIX);
_bstr_t text2 = get(DCTVS_AccountOptions_Prefix);
_bstr_t text3 = get(DCTVS_AccountOptions_Suffix);
if (UStrICmp(text3,L""))
{
disable(hwndDlg,IDC_PREFIX);
enable(hwndDlg,IDC_SUFFIX);
CheckRadioButton(hwndDlg,IDC_RADIO_PREFIX,IDC_RADIO_SUFFIX,IDC_RADIO_SUFFIX);
}
else
{
enable(hwndDlg,IDC_PREFIX);
disable(hwndDlg,IDC_SUFFIX);
CheckRadioButton(hwndDlg,IDC_RADIO_PREFIX,IDC_RADIO_SUFFIX,IDC_RADIO_PREFIX);
}
}
break;
}
case WM_COMMAND:
{
switch(LOWORD (wParam))
{
case IDC_SKIP_CONFLICTING_ACCOUNTS :
pdata->renameSwitch=1;
disable(hwndDlg,IDC_REMOVE_EXISTING_USER_RIGHTS);
disable(hwndDlg,IDC_REPLACE_EXISTING_GROUP_MEMBERS);
disable(hwndDlg,IDC_REMOVE_EXISTING_LOCATION);
disable(hwndDlg,IDC_PREFIX);
disable(hwndDlg,IDC_SUFFIX);
disable(hwndDlg,IDC_RADIO_PREFIX);
disable(hwndDlg,IDC_RADIO_SUFFIX);
break;
case IDC_REPLACE_CONFLICTING_ACCOUNTS :
pdata->renameSwitch=2;
enable(hwndDlg,IDC_REMOVE_EXISTING_USER_RIGHTS);
enable(hwndDlg,IDC_REMOVE_EXISTING_LOCATION);
if ((migration!=w_computer) && (bCopyGroups))
enable(hwndDlg,IDC_REPLACE_EXISTING_GROUP_MEMBERS);
else
{
disable(hwndDlg,IDC_REPLACE_EXISTING_GROUP_MEMBERS);
CheckDlgButton( hwndDlg,IDC_REPLACE_EXISTING_GROUP_MEMBERS,false);
}
disable(hwndDlg,IDC_PREFIX);
disable(hwndDlg,IDC_SUFFIX);
disable(hwndDlg,IDC_RADIO_PREFIX);
disable(hwndDlg,IDC_RADIO_SUFFIX);
break;
case IDC_RENAME_CONFLICTING_ACCOUNTS :
pdata->renameSwitch=3;
disable(hwndDlg,IDC_REMOVE_EXISTING_USER_RIGHTS);
disable(hwndDlg,IDC_REPLACE_EXISTING_GROUP_MEMBERS);
disable(hwndDlg,IDC_REMOVE_EXISTING_LOCATION);
enable(hwndDlg,IDC_RADIO_PREFIX);
enable(hwndDlg,IDC_RADIO_SUFFIX);
if (IsDlgButtonChecked(hwndDlg,IDC_RADIO_SUFFIX))
{
enable(hwndDlg,IDC_SUFFIX);
CheckRadioButton(hwndDlg,IDC_RADIO_PREFIX,IDC_RADIO_SUFFIX,IDC_RADIO_SUFFIX);
}
else
{
enable(hwndDlg,IDC_PREFIX);
CheckRadioButton(hwndDlg,IDC_RADIO_PREFIX,IDC_RADIO_SUFFIX,IDC_RADIO_PREFIX);
}
break;
case IDC_RADIO_SUFFIX :
enable(hwndDlg,IDC_SUFFIX);
disable(hwndDlg,IDC_PREFIX);
CheckDlgButton(hwndDlg,IDC_RADIO_PREFIX,false);
SetFocus(GetDlgItem(hwndDlg, IDC_SUFFIX));
SendDlgItemMessage(hwndDlg, IDC_SUFFIX, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
break;
case IDC_RADIO_PREFIX :
enable(hwndDlg,IDC_PREFIX);
disable(hwndDlg,IDC_SUFFIX);
CheckDlgButton(hwndDlg,IDC_RADIO_SUFFIX,false);
SetFocus(GetDlgItem(hwndDlg, IDC_PREFIX));
SendDlgItemMessage(hwndDlg, IDC_PREFIX, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
break;
default:
break;
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
if (IsDlgButtonChecked(hwndDlg, IDC_REPLACE_CONFLICTING_ACCOUNTS))
{
if ((migration==w_computer) || (!bCopyGroups))
{
disable(hwndDlg,IDC_REPLACE_EXISTING_GROUP_MEMBERS);
CheckDlgButton( hwndDlg,IDC_REPLACE_EXISTING_GROUP_MEMBERS,false);
}
else
{
enable(hwndDlg,IDC_REPLACE_EXISTING_GROUP_MEMBERS);
initcheckbox(hwndDlg,IDC_REPLACE_EXISTING_GROUP_MEMBERS,DCTVS_AccountOptions_ReplaceExistingGroupMembers);
}
}
break;
case PSN_WIZNEXT :
{
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
if (IsDlgButtonChecked (hwndDlg,IDC_SKIP_CONFLICTING_ACCOUNTS))
{
put(DCTVS_AccountOptions_Prefix,L"");
put(DCTVS_AccountOptions_Suffix,L"");
put(DCTVS_AccountOptions_ReplaceExistingAccounts,L"");
put(DCTVS_AccountOptions_RemoveExistingUserRights,L"");
put(DCTVS_AccountOptions_ReplaceExistingGroupMembers,L"");
put(DCTVS_AccountOptions_MoveReplacedAccounts,L"");
}
else if (IsDlgButtonChecked (hwndDlg,IDC_REPLACE_CONFLICTING_ACCOUNTS))
{
put(DCTVS_AccountOptions_Prefix,L"");
put(DCTVS_AccountOptions_Suffix,L"");
put(DCTVS_AccountOptions_ReplaceExistingAccounts,yes);
checkbox( hwndDlg,IDC_REMOVE_EXISTING_USER_RIGHTS,DCTVS_AccountOptions_RemoveExistingUserRights);
checkbox( hwndDlg,IDC_REMOVE_EXISTING_LOCATION,DCTVS_AccountOptions_MoveReplacedAccounts);
if (IsDlgButtonChecked(hwndDlg,IDC_REPLACE_EXISTING_GROUP_MEMBERS) && (migration==w_account))
{
if (!bCopyGroups)
{
CheckDlgButton( hwndDlg,IDC_REPLACE_EXISTING_GROUP_MEMBERS,false);
}
}
if (migration!=w_computer)
checkbox( hwndDlg,IDC_REPLACE_EXISTING_GROUP_MEMBERS,DCTVS_AccountOptions_ReplaceExistingGroupMembers);
}
else if (IsDlgButtonChecked (hwndDlg,IDC_RENAME_CONFLICTING_ACCOUNTS) &&
IsDlgButtonChecked (hwndDlg,IDC_RADIO_PREFIX))
{
if (!validString(hwndDlg,IDC_PREFIX))
{
MessageBoxWrapperFormat1(hwndDlg,IDS_MSG_INVALIDCHARS,IDS_INVALID_STRING,IDS_MSG_INPUT);
SetFocus(GetDlgItem(hwndDlg, IDC_PREFIX));
SendDlgItemMessage(hwndDlg, IDC_PREFIX, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
else if (IsDlgItemEmpty(hwndDlg,IDC_PREFIX))
{
MessageBoxWrapper(hwndDlg,IDS_MSG_BLANK,IDS_MSG_INPUT);
SetFocus(GetDlgItem(hwndDlg, IDC_PREFIX));
SendDlgItemMessage(hwndDlg, IDC_PREFIX, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
else if (tooManyChars(hwndDlg,IDC_PREFIX))
{
MessageBoxWrapper(hwndDlg,IDS_MSG_EXTENSION_MAX_PRE,IDS_MSG_INPUT);
SetFocus(GetDlgItem(hwndDlg, IDC_PREFIX));
SendDlgItemMessage(hwndDlg, IDC_PREFIX, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
else
{
editbox( hwndDlg, IDC_PREFIX,DCTVS_AccountOptions_Prefix );
put(DCTVS_AccountOptions_Suffix,L"");
put(DCTVS_AccountOptions_ReplaceExistingAccounts,L"");
put(DCTVS_AccountOptions_RemoveExistingUserRights,L"");
put(DCTVS_AccountOptions_ReplaceExistingGroupMembers,L"");
put(DCTVS_AccountOptions_MoveReplacedAccounts,L"");
}
}
else if (IsDlgButtonChecked (hwndDlg,IDC_RENAME_CONFLICTING_ACCOUNTS) &&
IsDlgButtonChecked (hwndDlg,IDC_RADIO_SUFFIX))
{
if (!validString(hwndDlg,IDC_SUFFIX))
{
MessageBoxWrapperFormat1(hwndDlg,IDS_MSG_INVALIDCHARS,IDS_INVALID_STRING,IDS_MSG_INPUT);
SetFocus(GetDlgItem(hwndDlg, IDC_SUFFIX));
SendDlgItemMessage(hwndDlg, IDC_SUFFIX, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
else if (IsDlgItemEmpty(hwndDlg,IDC_SUFFIX))
{
MessageBoxWrapper(hwndDlg,IDS_MSG_BLANK,IDS_MSG_INPUT);
SetFocus(GetDlgItem(hwndDlg, IDC_SUFFIX));
SendDlgItemMessage(hwndDlg, IDC_SUFFIX, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
else if (tooManyChars(hwndDlg,IDC_SUFFIX))
{
MessageBoxWrapper(hwndDlg,IDS_MSG_EXTENSION_MAX_SUF,IDS_MSG_INPUT);
SetFocus(GetDlgItem(hwndDlg, IDC_SUFFIX));
SendDlgItemMessage(hwndDlg, IDC_SUFFIX, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
else
{
editbox( hwndDlg, IDC_SUFFIX,DCTVS_AccountOptions_Suffix );
put(DCTVS_AccountOptions_Prefix,L"");
put(DCTVS_AccountOptions_ReplaceExistingAccounts,L"");
put(DCTVS_AccountOptions_RemoveExistingUserRights,L"");
put(DCTVS_AccountOptions_ReplaceExistingGroupMembers,L"");
put(DCTVS_AccountOptions_MoveReplacedAccounts,L"");
}
}
if (migration==w_account)
{
if (someServiceAccounts(pdata->accounts,hwndDlg))
{
pdata->someService=true;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_SA_INFO);
return TRUE;
}
else
{
pdata->someService=false;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_END_ACCOUNT);
return TRUE;
}
}
else if (migration==w_group)
{
if (pdata->migratingGroupMembers && !pdata->sameForest)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_PASSWORD);
return TRUE;
}
else
{
pdata->someService=false;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_END_GROUP);
return TRUE;
}
}
break;
}
case PSN_WIZBACK :
{
if (!pdata->sameForest && pdata->IsSidHistoryChecked && migration==w_group)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_CREDENTIALS);
return TRUE;
}
if (!pdata->sourceIsNT4 && !pdata->sameForest && migration==w_account)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_PROP_EXCLUSION);
return TRUE;
}
else if (migration==w_account)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_OPTIONS);
return TRUE;
}
else if (migration==w_computer && pdata->sourceIsNT4)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_REBOOT);
return TRUE;
}
else if (pdata->sourceIsNT4 || pdata->sameForest && migration==w_group)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_OPTIONS_GROUP);
return TRUE;
}
else if (migration==w_group)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_PROP_EXCLUSION);
return TRUE;
}
break;
}
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(NAME_CONFLICT_HELP, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(NAME_CONFLICT_HELP, hwndDlg);
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK IntSelectionSecurityProc (
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
HWND hLC= GetDlgItem(hwndDlg,IDC_LIST_MEMBERS1);
m_listBox.Attach(hLC);
setupColumns(pdata->sourceIsNT4);
m_listBox.DeleteAllItems();
disable(hwndDlg,IDC_REMOVE_BUTTON);
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK);
HWND hLC4= GetDlgItem(hwndDlg,IDC_ADDITIONAL_TRUSTING_DOMAIN);
additionalDrop.Attach(hLC4);
if ((migration==w_security) && (pdata->secWithMapFile))
{
IADsADSystemInfoPtr spSystemInfo(__uuidof(ADSystemInfo));
BSTR bstr;
HRESULT hr = spSystemInfo->get_DomainDNSName(&bstr);
if (SUCCEEDED(hr))
{
targetDNS = (LPCTSTR)_bstr_t(bstr, false);
}
else
{
targetDNS.Empty();
}
hr = spSystemInfo->get_DomainShortName(&bstr);
if (SUCCEEDED(hr))
{
targetNetbios = (LPCTSTR)_bstr_t(bstr, false);
}
else
{
targetNetbios.Empty();
}
}
else if ((migration==w_security) && (!pdata->secWithMapFile))
lastInitializedTo=GetTargetDomainName();
else
lastInitializedTo=GetSourceDomainName();
populateTrustingList(GetTargetDomainName(), additionalDrop);
break;
}
case WM_HELP :
{
SharedHelp(COMPUTER_SELECTION_HELP, hwndDlg);
break;
}
case WM_COMMAND :
{
switch(LOWORD (wParam))
{
case IDC_ADD_BUTTON :
{CWaitCursor w;
HRESULT hr=S_OK;
CString tempTrustingDomain;
GetDlgItemText(hwndDlg,IDC_ADDITIONAL_TRUSTING_DOMAIN,tempTrustingDomain.GetBuffer(1000),1000);
tempTrustingDomain.ReleaseBuffer();
tempTrustingDomain.TrimLeft();tempTrustingDomain.TrimRight();
if (tempTrustingDomain.IsEmpty() && (lastInitializedTo.CompareNoCase(GetSourceDomainName())) && (migration!=w_security))
{
_bstr_t strDc;
DWORD res = GetAnyDcName5(GetSourceDomainName(), strDc);
if (res==NO_ERROR)
{
lastInitializedTo=GetSourceDomainName();
hr =InitObjectPicker2(pDsObjectPicker,true,(LPCTSTR)strDc,false);
}else
hr=E_UNEXPECTED;
}
else if (tempTrustingDomain.IsEmpty() && (migration==w_security))
{
_bstr_t strDc;
DWORD res = GetAnyDcName5(GetTargetDomainName(), strDc);
if (res==NO_ERROR)
{
lastInitializedTo=GetTargetDomainName();
hr =InitObjectPicker2(pDsObjectPicker,true,(LPCTSTR)strDc,pdata->sourceIsNT4);
}else
hr=E_UNEXPECTED;
}
else if (lastInitializedTo.CompareNoCase(tempTrustingDomain) && !tempTrustingDomain.IsEmpty())
{
CString additionalDomainController;
if (!verifyprivs2(hwndDlg,additionalDomainController,tempTrustingDomain))
{
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_SELECTION4);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_SELECTION4);
return TRUE;
}
lastInitializedTo=tempTrustingDomain;
hr =ReInitializeObjectPicker(pDsObjectPicker,true,additionalDomainController,pdata->sourceIsNT4);
}
if (FAILED(hr))
{
MessageBoxWrapper(hwndDlg,IDS_MSG_OBJECTPICKER_SOURCE2,IDS_MSG_ERROR);
SetDlgItemText(hwndDlg,IDC_ADDITIONAL_TRUSTING_DOMAIN,L"");
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_SELECTION4);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_SELECTION4);
return TRUE;
}
// if (migration==w_security)
// OnADD(hwndDlg,false);
// else
OnADD(hwndDlg,pdata->sourceIsNT4);
sort(m_listBox,0,pdata->sort[0]);
enableNextIfObjectsSelected(hwndDlg);
break;
}
case IDC_REMOVE_BUTTON :
OnREMOVE(hwndDlg);
enableNextIfObjectsSelected(hwndDlg);
break;
default :
break;
}
enableRemoveIfNecessary(hwndDlg);
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
{
if (pdata->newSource)
{
m_listBox.DeleteAllItems();
pdata->newSource=false;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
}
if (m_listBox.GetItemCount()==0)
PostMessage(GetParent(hwndDlg), PSM_SETWIZBUTTONS, 0, PSWIZB_BACK);
else
PostMessage(GetParent(hwndDlg), PSM_SETWIZBUTTONS, 0, PSWIZB_BACK|PSWIZB_NEXT);
break;
}
case LVN_COLUMNCLICK:
{
LPNMLISTVIEW pnmv = (NM_LISTVIEW FAR *) lParam;
pdata->sort[pnmv->iSubItem] = !pdata->sort[pnmv->iSubItem];
sort(m_listBox,pnmv->iSubItem,pdata->sort[pnmv->iSubItem] );
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
break;
}
case NM_SETFOCUS :
case NM_KILLFOCUS :
case NM_CLICK:
{
enableRemoveIfNecessary(hwndDlg);
break;
}
case PSN_WIZNEXT :
{CWaitCursor w;
if (m_listBox.GetItemCount()==0)
{
MessageBoxWrapper(hwndDlg,IDS_MSG_OBJECT,IDS_MSG_INPUT);
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_SELECTION1);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_SELECTION1);
return TRUE;
}
OnMIGRATE(hwndDlg,pdata->accounts,pdata->servers);
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
break;
}
case PSN_WIZBACK :
{
if (migration==w_security)
{
// clear the item selected previous in the "additional domain" combo box
SetDlgItemText(hwndDlg,IDC_ADDITIONAL_TRUSTING_DOMAIN, L"");
_bstr_t text= get(DCTVS_AccountOptions_SecurityInputMOT);
if (UStrICmp(text ,(WCHAR const *) yes))
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_TRANSLATION_SRC);
return TRUE;
}
}
break;
}
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(COMPUTER_SELECTION_HELP, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK IntSelectionProc (
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
HWND hLC= GetDlgItem(hwndDlg,IDC_LIST_MEMBERS1);
m_listBox.Attach(hLC);
setupColumns(pdata->sourceIsNT4);
m_listBox.DeleteAllItems();
disable(hwndDlg,IDC_REMOVE_BUTTON);
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK);
break;
}
case WM_HELP :
{
int id=0;
if (migration==w_computer || (migration==w_security || migration==w_reporting))
{
SharedHelp(COMPUTER_SELECTION_HELP, hwndDlg);
}
else if (migration==w_account)
{
SharedHelp(USER_SELECTION_HELP, hwndDlg);
}
else if (migration==w_group || migration==w_groupmapping)
{
SharedHelp(GROUP_SELECTION_HELP, hwndDlg);
}
else if (migration==w_service)
{
SharedHelp(SERVICE_ACCOUNT_SELECTION, hwndDlg);
}
break;
}
case WM_COMMAND :
{
switch(LOWORD (wParam))
{
case IDC_ADD_BUTTON :
OnADD(hwndDlg,pdata->sourceIsNT4);
//sort(m_listBox,0,pdata->sort[0]);
enableNextIfObjectsSelected(hwndDlg);
break;
case IDC_REMOVE_BUTTON :
OnREMOVE(hwndDlg);
enableNextIfObjectsSelected(hwndDlg);
break;
default :
break;
}
enableRemoveIfNecessary(hwndDlg);
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
{
if (pdata->newSource)
{
// might need to update the columns when the source is changed
setupColumns(pdata->sourceIsNT4);
m_listBox.DeleteAllItems();
pdata->newSource=false;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
}PostMessage(GetParent(hwndDlg), PSM_SETWIZBUTTONS, 0, PSWIZB_BACK|PSWIZB_NEXT);
if (m_listBox.GetItemCount()==0)
PostMessage(GetParent(hwndDlg), PSM_SETWIZBUTTONS, 0, PSWIZB_BACK);
else
PostMessage(GetParent(hwndDlg), PSM_SETWIZBUTTONS, 0, PSWIZB_BACK|PSWIZB_NEXT);
break;
}
case LVN_COLUMNCLICK:
{
LPNMLISTVIEW pnmv = (NM_LISTVIEW FAR *) lParam;
pdata->sort[pnmv->iSubItem] = !pdata->sort[pnmv->iSubItem];
//sort(m_listBox,pnmv->iSubItem,pdata->sort[pnmv->iSubItem] );
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
break;
}
case NM_SETFOCUS :
case NM_KILLFOCUS :
case NM_CLICK:
{
enableRemoveIfNecessary(hwndDlg);
break;
}
case PSN_WIZNEXT :
{CWaitCursor w;
if (m_listBox.GetItemCount()==0)
{
MessageBoxWrapper(hwndDlg,IDS_MSG_OBJECT,IDS_MSG_INPUT);
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_SELECTION1);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_SELECTION1);
return TRUE;
}
OnMIGRATE(hwndDlg,pdata->accounts,pdata->servers);
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
break;
}
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
int id=0;
if (migration==w_computer || (migration==w_security || migration==w_reporting))
{
SharedHelp(COMPUTER_SELECTION_HELP, hwndDlg);
}
else if (migration==w_account)
{
SharedHelp(USER_SELECTION_HELP, hwndDlg);
}
else if (migration==w_group || migration==w_groupmapping)
{
SharedHelp(GROUP_SELECTION_HELP, hwndDlg);
}
else if (migration==w_service)
{
SharedHelp(SERVICE_ACCOUNT_SELECTION, hwndDlg);
}
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
}
default:
break;
}
return 0;
}
INT_PTR CALLBACK
IntHTMLLocationProc(
IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
// LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLong(hwndDlg, GWL_USERDATA);
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
// SetWindowLong(hwndDlg, GWL_USERDATA, (long) pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
initeditbox( hwndDlg,IDC_HTML_TARGET,DCTVS_Reports_Directory);
if (IsDlgItemEmpty(hwndDlg,IDC_HTML_TARGET))
{
CString toinsert;
GetDirectory(toinsert.GetBuffer(1000));
toinsert.ReleaseBuffer();
toinsert+="Reports";
SetDlgItemText(hwndDlg,IDC_HTML_TARGET,toinsert);
}
//load the data from the database and display in the listbox.
break;
}
case WM_COMMAND:
{
switch(LOWORD (wParam))
{
case IDC_BROWSE :
OnBROWSE(hwndDlg,IDC_HTML_TARGET);
break;
default:
break;
}
switch(HIWORD(wParam))
{
case EN_CHANGE :
enableNextIfNecessary(hwndDlg,IDC_HTML_TARGET);
break;
default:
break;
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
IsDlgItemEmpty(hwndDlg,IDC_HTML_TARGET) ?
PostMessage(GetParent(hwndDlg), PSM_SETWIZBUTTONS, 0, PSWIZB_BACK):
PostMessage(GetParent(hwndDlg), PSM_SETWIZBUTTONS, 0, PSWIZB_BACK|PSWIZB_NEXT);
break;
case PSN_WIZNEXT :
{
// SetWindowLong(hwndDlg, GWL_USERDATA, (long )pdata);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
if (IsDlgItemEmpty(hwndDlg,IDC_HTML_TARGET))
{
MessageBoxWrapper(hwndDlg,IDS_MSG_DIRECTORY,IDS_MSG_INPUT);
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_HTML_LOCATION);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_HTML_LOCATION);
return TRUE;
}
else if (!validDirectoryString(hwndDlg,IDC_HTML_TARGET))
{
MessageBoxWrapper(hwndDlg,IDS_MSG_DIRECTORY,IDS_MSG_INPUT);
// SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_HTML_LOCATION);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_HTML_LOCATION);
return TRUE;
}
else
{
editbox( hwndDlg,IDC_HTML_TARGET,DCTVS_Reports_Directory);
}
break;
}
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(DIRECTORY_SELECTION_HELP, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
}
case WM_HELP :
{
SharedHelp(DIRECTORY_SELECTION_HELP, hwndDlg);
break;
}
default:
break;
}
return 0;
}
/*********************************************************************
* *
* Written by: Paul Thompson *
* Date: 3 OCT 2000 *
* *
* This callback function is responsible for handling the windows*
* messages for the new Translation Input dialog. *
* *
*********************************************************************/
//BEGIN IntTranslationInputProc
INT_PTR CALLBACK
IntTranslationInputProc(
IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
initsecinputbox(hwndDlg,IDC_TRANS_FROM_MOT,IDC_TRANS_FROM_FILE,DCTVS_AccountOptions_SecurityInputMOT);
if (IsDlgButtonChecked(hwndDlg,IDC_TRANS_FROM_MOT))
{
disable(hwndDlg,IDC_BROWSE);
disable(hwndDlg,IDC_MAPPING_FILE);
disable(hwndDlg,IDC_SIDTEXT);
}
else
{
enable(hwndDlg,IDC_BROWSE);
enable(hwndDlg,IDC_MAPPING_FILE);
enable(hwndDlg,IDC_SIDTEXT);
initeditbox( hwndDlg,IDC_MAPPING_FILE,DCTVS_AccountOptions_SecurityMapFile);
}
break;
}
case WM_COMMAND:
{
switch(LOWORD (wParam))
{
case IDC_BROWSE :
OnMapFileBrowse(hwndDlg,IDC_MAPPING_FILE);
break;
case IDC_TRANS_FROM_MOT :
disable(hwndDlg,IDC_BROWSE);
disable(hwndDlg,IDC_MAPPING_FILE);
disable(hwndDlg,IDC_SIDTEXT);
break;
case IDC_TRANS_FROM_FILE :
enable(hwndDlg,IDC_BROWSE);
enable(hwndDlg,IDC_MAPPING_FILE);
enable(hwndDlg,IDC_SIDTEXT);
initeditbox( hwndDlg,IDC_MAPPING_FILE,DCTVS_AccountOptions_SecurityMapFile);
break;
default:
break;
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_SETACTIVE :
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
break;
case PSN_WIZNEXT :
{
//set some data fields since we don't know source or target domains
pdata->sameForest = false;
pdata->sourceIsNT4 = true;
checkbox( hwndDlg,IDC_TRANS_FROM_MOT,DCTVS_AccountOptions_SecurityInputMOT);
if (IsDlgButtonChecked(hwndDlg,IDC_TRANS_FROM_FILE))
{
pdata->secWithMapFile = true;
//check if a file is given
if (IsDlgItemEmpty(hwndDlg,IDC_MAPPING_FILE))
{
MessageBoxWrapper(hwndDlg,IDS_MAPFILE_EMPTY,IDS_MAPFILE_TITLE);
SetFocus(GetDlgItem(hwndDlg, IDC_MAPPING_FILE));
SendDlgItemMessage(hwndDlg, IDC_MAPPING_FILE, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
//see if the given file exists
else if (!checkMapFile(hwndDlg))
{
MessageBoxWrapper(hwndDlg,IDS_MAPFILE_MISSING,IDS_MAPFILE_TITLE);
SetFocus(GetDlgItem(hwndDlg, IDC_MAPPING_FILE));
SendDlgItemMessage(hwndDlg, IDC_MAPPING_FILE, EM_SETSEL,
(WPARAM)0, (LPARAM)-1);
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
else
{
//save sid mapping file specified
editbox(hwndDlg,IDC_MAPPING_FILE,DCTVS_AccountOptions_SecurityMapFile);
//if input from Sid mapping file, go to the security selection screen and do not
//retrieve domain information
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,IDD_SELECTION4);
return TRUE;
}
}
else
pdata->secWithMapFile = false;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)pdata);
break;
}
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(TRANSLATION_OPTION, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(TRANSLATION_OPTION, hwndDlg);
break;
}
default:
break;
}
return 0;
}
//END IntTranslationInputProc
/*********************************************************************
* *
* Written by: Paul Thompson *
* Date: 25 OCT 2000 *
* *
* This callback function is responsible for handling the windows*
* messages for the new Object Property Exclusion dialog. This *
* dialog allows the user to exclude certain properties, on a W2K to *
* W2K inter-forest migration, from being copied to the target *
* account. *
* *
*********************************************************************/
//BEGIN IntPropExclusionProc
INT_PTR CALLBACK
IntPropExclusionProc(
IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
LPSHAREDWIZDATA pdata = (LPSHAREDWIZDATA) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG :
{
pdata = (LPSHAREDWIZDATA) ((LPPROPSHEETPAGE) lParam) -> lParam;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) pdata);
initpropdlg(hwndDlg);
}
case WM_COMMAND:
{
switch(LOWORD (wParam))
{
case IDC_EXCLUDEPROPS :
if (!IsDlgButtonChecked(hwndDlg,IDC_EXCLUDEPROPS))
{
disable(hwndDlg,IDC_OBJECTCMBO);
disable(hwndDlg,IDC_INCLUDELIST);
disable(hwndDlg,IDC_EXCLUDELIST);
disable(hwndDlg,IDC_EXCLUDEBTN);
disable(hwndDlg,IDC_INCLUDEBTN);
}
else
{
enable(hwndDlg,IDC_OBJECTCMBO);
enable(hwndDlg,IDC_INCLUDELIST);
enable(hwndDlg,IDC_EXCLUDELIST);
enable(hwndDlg,IDC_EXCLUDEBTN);
enable(hwndDlg,IDC_INCLUDEBTN);
}
break;
case IDC_EXCLUDEBTN :
moveproperties(hwndDlg, true);
break;
case IDC_INCLUDEBTN :
moveproperties(hwndDlg, false);
break;
default:
break;
}
switch(HIWORD (wParam))
{
case CBN_SELCHANGE :
if (LOWORD (wParam) == IDC_OBJECTCMBO)
listproperties(hwndDlg);
break;
default:
break;
}
break;
}
case WM_NOTIFY :
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case NM_DBLCLK:
{
UINT uId = (UINT) wParam;
if (uId == IDC_INCLUDELIST)
moveproperties(hwndDlg, true);
else if (uId == IDC_EXCLUDELIST)
moveproperties(hwndDlg, false);
}
break;
case PSN_SETACTIVE :
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
if (bChangedMigrationTypes)
{
initpropdlg(hwndDlg);
bChangedMigrationTypes=false;
}
break;
case PSN_WIZNEXT :
checkbox(hwndDlg,IDC_EXCLUDEPROPS,DCTVS_AccountOptions_ExcludeProps);
saveproperties(hwndDlg);
if (migration==w_account)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT,IDD_RENAMING);
return TRUE;
}
else if (migration==w_group)
{
if (!pdata->sameForest && pdata->IsSidHistoryChecked)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_CREDENTIALS);
return TRUE;
}
else
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT,IDD_RENAMING);
return TRUE;
}
}
break;
case PSN_WIZBACK :
break;
case PSN_QUERYCANCEL :
{
if (!ReallyCancel(hwndDlg))
{
SetWindowLongPtr(hwndDlg,DWLP_MSGRESULT,-1);
return TRUE;
}
GetError(0); //clear any old com errors
break;
}
case PSN_HELP :
{
SharedHelp(OBJECT_PROPERTY_EXCLUSION, hwndDlg);
break;
}
case PSN_RESET :
break;
default :
break;
}
break;
} case WM_HELP :
{
SharedHelp(OBJECT_PROPERTY_EXCLUSION, hwndDlg);
break;
}
default:
break;
}
return 0;
}
//END IntPropExclusionProc