static BOOL OnEndLabelEdit(LPNMLVDISPINFO pnmv) { TCHAR szOldUserName[UNLEN]; TCHAR szNewUserName[UNLEN]; USER_INFO_0 useri0; NET_API_STATUS status; /* Leave, if there is no valid listview item */ if (pnmv->item.iItem == -1) return FALSE; /* Get the new user name */ ListView_GetItemText(pnmv->hdr.hwndFrom, pnmv->item.iItem, 0, szOldUserName, UNLEN); /* Leave, if the user canceled the edit action */ if (pnmv->item.pszText == NULL) return FALSE; /* Get the new user name */ lstrcpy(szNewUserName, pnmv->item.pszText); /* Leave, if the user name was not changed */ if (lstrcmp(szOldUserName, szNewUserName) == 0) return FALSE; /* Check the user name for illegal characters */ if (!CheckAccountName(NULL, 0, szNewUserName)) return FALSE; /* Change the user name */ useri0.usri0_name = szNewUserName; #if 0 status = NetUserSetInfo(NULL, szOldUserName, 0, (LPBYTE)&useri0, NULL); #else status = NERR_Success; #endif if (status != NERR_Success) { TCHAR szText[256]; wsprintf(szText, TEXT("Error: %u"), status); MessageBox(NULL, szText, TEXT("NetUserSetInfo"), MB_ICONERROR | MB_OK); return FALSE; } /* Update the listview item */ ListView_SetItemText(pnmv->hdr.hwndFrom, pnmv->item.iItem, 0, szNewUserName); return TRUE; }
INT_PTR CALLBACK NewUserDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { PUSER_INFO_3 userInfo; INT nLength; UNREFERENCED_PARAMETER(wParam); userInfo = (PUSER_INFO_3)GetWindowLongPtr(hwndDlg, DWLP_USER); switch (uMsg) { case WM_INITDIALOG: userInfo = (PUSER_INFO_3)lParam; SetWindowLongPtr(hwndDlg, DWLP_USER, lParam); SendDlgItemMessage(hwndDlg, IDC_USER_NEW_NAME, EM_SETLIMITTEXT, 20, 0); UpdateUserOptions(hwndDlg, userInfo, TRUE); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_USER_NEW_NAME: if (HIWORD(wParam) == EN_CHANGE) { nLength = SendDlgItemMessage(hwndDlg, IDC_USER_NEW_NAME, WM_GETTEXTLENGTH, 0, 0); EnableWindow(GetDlgItem(hwndDlg, IDOK), (nLength > 0)); } break; case IDC_USER_NEW_FORCE_CHANGE: userInfo->usri3_password_expired = !userInfo->usri3_password_expired; UpdateUserOptions(hwndDlg, userInfo, FALSE); break; case IDC_USER_NEW_CANNOT_CHANGE: userInfo->usri3_flags ^= UF_PASSWD_CANT_CHANGE; UpdateUserOptions(hwndDlg, userInfo, FALSE); break; case IDC_USER_NEW_NEVER_EXPIRES: userInfo->usri3_flags ^= UF_DONT_EXPIRE_PASSWD; UpdateUserOptions(hwndDlg, userInfo, FALSE); break; case IDC_USER_NEW_DISABLED: userInfo->usri3_flags ^= UF_ACCOUNTDISABLE; break; case IDOK: if (!CheckAccountName(hwndDlg, IDC_USER_NEW_NAME, NULL)) { SetFocus(GetDlgItem(hwndDlg, IDC_USER_NEW_NAME)); SendDlgItemMessage(hwndDlg, IDC_USER_NEW_NAME, EM_SETSEL, 0, -1); break; } if (!CheckPasswords(hwndDlg, IDC_USER_NEW_PASSWORD1, IDC_USER_NEW_PASSWORD2)) { SetDlgItemText(hwndDlg, IDC_USER_NEW_PASSWORD1, TEXT("")); SetDlgItemText(hwndDlg, IDC_USER_NEW_PASSWORD2, TEXT("")); break; } /* Store the user name */ nLength = SendDlgItemMessage(hwndDlg, IDC_USER_NEW_NAME, WM_GETTEXTLENGTH, 0, 0); if (nLength > 0) { userInfo->usri3_name = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (nLength + 1) * sizeof(WCHAR)); GetDlgItemText(hwndDlg, IDC_USER_NEW_NAME, userInfo->usri3_name, nLength + 1); } /* Store the full user name */ nLength = SendDlgItemMessage(hwndDlg, IDC_USER_NEW_FULL_NAME, WM_GETTEXTLENGTH, 0, 0); if (nLength > 0) { userInfo->usri3_full_name = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (nLength + 1) * sizeof(WCHAR)); GetDlgItemText(hwndDlg, IDC_USER_NEW_FULL_NAME, userInfo->usri3_full_name, nLength + 1); } /* Store the description */ nLength = SendDlgItemMessage(hwndDlg, IDC_USER_NEW_DESCRIPTION, WM_GETTEXTLENGTH, 0, 0); if (nLength > 0) { userInfo->usri3_comment = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (nLength + 1) * sizeof(WCHAR)); GetDlgItemText(hwndDlg, IDC_USER_NEW_DESCRIPTION, userInfo->usri3_comment, nLength + 1); } /* Store the password */ nLength = SendDlgItemMessage(hwndDlg, IDC_USER_NEW_PASSWORD1, WM_GETTEXTLENGTH, 0, 0); if (nLength > 0) { userInfo->usri3_password = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (nLength + 1) * sizeof(WCHAR)); GetDlgItemText(hwndDlg, IDC_USER_NEW_PASSWORD1, userInfo->usri3_password, nLength + 1); } EndDialog(hwndDlg, IDOK); break; case IDCANCEL: EndDialog(hwndDlg, IDCANCEL); break; } break; default: return FALSE; } return TRUE; }
INT_PTR CALLBACK NewGroupDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { PLOCALGROUP_INFO_1 groupInfo; INT nLength; UNREFERENCED_PARAMETER(wParam); groupInfo = (PLOCALGROUP_INFO_1)GetWindowLongPtr(hwndDlg, DWLP_USER); switch (uMsg) { case WM_INITDIALOG: SetWindowLongPtr(hwndDlg, DWLP_USER, lParam); groupInfo = (PLOCALGROUP_INFO_1)lParam; SendDlgItemMessage(hwndDlg, IDC_GROUP_NEW_NAME, EM_SETLIMITTEXT, 20, 0); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_GROUP_NEW_NAME: if (HIWORD(wParam) == EN_CHANGE) { nLength = SendDlgItemMessage(hwndDlg, IDC_GROUP_NEW_NAME, WM_GETTEXTLENGTH, 0, 0); EnableWindow(GetDlgItem(hwndDlg, IDOK), (nLength > 0)); } break; case IDOK: if (!CheckAccountName(hwndDlg, IDC_GROUP_NEW_NAME, NULL)) { SetFocus(GetDlgItem(hwndDlg, IDC_GROUP_NEW_NAME)); SendDlgItemMessage(hwndDlg, IDC_GROUP_NEW_NAME, EM_SETSEL, 0, -1); break; } nLength = SendDlgItemMessage(hwndDlg, IDC_GROUP_NEW_NAME, WM_GETTEXTLENGTH, 0, 0); if (nLength > 0) { groupInfo->lgrpi1_name = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (nLength + 1) * sizeof(WCHAR)); GetDlgItemText(hwndDlg, IDC_GROUP_NEW_NAME, groupInfo->lgrpi1_name, nLength + 1); } nLength = SendDlgItemMessage(hwndDlg, IDC_GROUP_NEW_DESCRIPTION, WM_GETTEXTLENGTH, 0, 0); if (nLength > 0) { groupInfo->lgrpi1_comment = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (nLength + 1) * sizeof(WCHAR)); GetDlgItemText(hwndDlg, IDC_GROUP_NEW_DESCRIPTION, groupInfo->lgrpi1_comment, nLength + 1); } EndDialog(hwndDlg, IDOK); break; case IDCANCEL: EndDialog(hwndDlg, IDCANCEL); break; } break; default: return FALSE; } return TRUE; }