From 35f10174b2386daabb90f1b15676d82d4b3efa34 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 18 Nov 2007 19:54:04 +0000 Subject: [PATCH] List all user profiles (SIDs only). svn path=/trunk/; revision=30559 --- reactos/dll/cpl/sysdm/userprofile.c | 53 +++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/reactos/dll/cpl/sysdm/userprofile.c b/reactos/dll/cpl/sysdm/userprofile.c index 613c95e3eeb..5ac8d7915b1 100644 --- a/reactos/dll/cpl/sysdm/userprofile.c +++ b/reactos/dll/cpl/sysdm/userprofile.c @@ -61,12 +61,65 @@ SetListViewColumns(HWND hwndListView) } +static VOID +AddUserProfile(HWND hwndListView, + LPTSTR lpProfileSid) +{ + LV_ITEM lvi; + INT iItem; + + memset(&lvi, 0x00, sizeof(lvi)); + lvi.mask = LVIF_TEXT | LVIF_STATE; + lvi.pszText = lpProfileSid; + lvi.state = 0; + iItem = ListView_InsertItem(hwndListView, &lvi); +} + + +static VOID +AddUserProfiles(HWND hwndListView) +{ + HKEY hKeyUserProfiles; + DWORD dwIndex; + TCHAR szProfileSid[64]; + DWORD dwSidLength; + FILETIME ftLastWrite; + + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, + _T("Software\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList"), + 0, + KEY_READ, + &hKeyUserProfiles)) + return; + + for (dwIndex = 0; ; dwIndex++) + { + dwSidLength = 64; + if (RegEnumKeyEx(hKeyUserProfiles, + dwIndex, + szProfileSid, + &dwSidLength, + NULL, + NULL, + NULL, + &ftLastWrite)) + break; + + AddUserProfile(hwndListView, szProfileSid); + } + + RegCloseKey(hKeyUserProfiles); +} + + static VOID OnInitDialog(HWND hwndDlg) { /* Initialize the list view control */ SetListViewColumns(GetDlgItem(hwndDlg, IDC_USERPROFILE_LIST)); + AddUserProfiles(GetDlgItem(hwndDlg, IDC_USERPROFILE_LIST)); + /* Disable the "Delete" and "Copy To" buttons if the user is not an admin */ if (!IsUserAdmin()) {