Как получить список пользователей Windows? Пока нашел только два варианта, через ключи в реестре и через System.DirectoryServices при использовании реестра Например считывать ключи из: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DocFolderPaths - Выводятся только те пользователи которые выполняли вход. т.е. есть User Admin и Гость гость никогда в систему не входил в ключах его не будет но он есть. Исользование System.DirectoryServices Пример на С# DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName); DirectoryEntry admGroup = localMachine.Children.Find("administrators","group"); object members = admGroup.Invoke("members", null); foreach (object groupMember in (IEnumerable)members) { DirectoryEntry member = new DirectoryEntry(groupMember); lstUsers.Items.Add(member.Name); } - нужно знать название групп пользователей, это может быть administrators либо Администраторы или еще что нить Есть ли еще способы как получить список всех пользоватей Windows? Заранее спасибо.
Код (Text): #include <wchar.h> #include <lm.h> ... LPUSER_INFO_0 pBuf = NULL; LPUSER_INFO_0 pTmpBuf; DWORD dwLevel = 0; DWORD dwPrefMaxLen = -1; DWORD dwEntriesRead = 0; DWORD dwTotalEntries = 0; DWORD dwResumeHandle = 0; DWORD i; DWORD dwTotalCount = 0; NET_API_STATUS nStatus; LPTSTR pszServerName = NULL; do { nStatus = NetUserEnum(NULL, dwLevel, FILTER_NORMAL_ACCOUNT, // global users (LPBYTE*)&pBuf, dwPrefMaxLen, &dwEntriesRead, &dwTotalEntries, &dwResumeHandle); // If the call succeeds, // if ((nStatus == NERR_Success) || (nStatus == ERROR_MORE_DATA)) { if ((pTmpBuf = pBuf) != NULL) { // Loop through the entries. // for (i = 0; (i < dwEntriesRead); i++) { if (pTmpBuf == NULL) break; // Print the name of the user account. // wprintf(L"%s\n", pTmpBuf->usri0_name); } pTmpBuf++; dwTotalCount++; } } } // // Free the allocated buffer. // if (pBuf != NULL) { NetApiBufferFree(pBuf); pBuf = NULL; } } // Continue to call NetUserEnum while // there are more entries. // while (nStatus == ERROR_MORE_DATA); // end do // // Check again for allocated memory. // if (pBuf != NULL) NetApiBufferFree(pBuf); ...