Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

58 lines
2.7 KiB

// --------------------------------------------------------------------------
// Module Name: UserList.h
//
// Copyright (c) 1999-2000, Microsoft Corporation
//
// Class that implements the user list filtering algorithm shared by winlogon
// calling into msgina and shgina (the logonocx) calling into msgina.
//
// History: 1999-10-30 vtan created
// 1999-11-26 vtan moved from logonocx
// 2000-01-31 vtan moved from Neptune to Whistler
// 2000-05-30 vtan moved IsUserLoggedOn to this file
// --------------------------------------------------------------------------
#ifndef _UserList_
#define _UserList_
#include "GinaIPC.h"
// --------------------------------------------------------------------------
// CUserList
//
// Purpose: A class that knows how to filter the user list from the net
// APIs using a common algorithm. This allows a focal point for
// the filter where a change here can affect all components.
//
// History: 1999-11-26 vtan created
// 2000-01-31 vtan moved from Neptune to Whistler
// --------------------------------------------------------------------------
class CUserList
{
public:
static LONG Get (bool fRemoveGuest, DWORD *pdwReturnedEntryCount, GINA_USER_INFORMATION* *pReturnedUserList);
static bool IsUserLoggedOn (const WCHAR *pszUsername, const WCHAR *pszDomain);
static int IsInteractiveLogonAllowed (const WCHAR *pszUserame);
private:
static PSID ConvertNameToSID (const WCHAR *pszUsername);
static bool IsUserMemberOfLocalAdministrators (const WCHAR *pszName);
static bool IsUserMemberOfLocalKnownGroup (const WCHAR *pszName);
static void DeleteEnumerateUsers (NET_DISPLAY_USER *pNDU, DWORD& dwEntriesRead, int iIndex);
static void DetermineWellKnownAccountNames (void);
static bool ParseDisplayInformation (NET_DISPLAY_USER *pNDU, DWORD dwEntriesRead, GINA_USER_INFORMATION*& pUserList, DWORD& dwEntryCount);
static void Sort (GINA_USER_INFORMATION *pUserList, DWORD dwEntryCount);
static unsigned char s_SIDAdministrator[];
static unsigned char s_SIDGuest[];
static WCHAR s_szAdministratorsGroupName[];
static WCHAR s_szPowerUsersGroupName[];
static WCHAR s_szUsersGroupName[];
static WCHAR s_szGuestsGroupName[];
static const int s_iMaximumUserCount = 100;
};
#endif /* _UserList_ */