windows-nt/Source/XPSP1/NT/shell/ext/msident/multiusr.h

103 lines
3.7 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/************************************************
MultiUsr.h
Header for multiple user functionality.
Initially by Christopher Evans (cevans) 7/16/98
*************************************************/
#ifndef _MULTIUSR_H
#define _MULTIUSR_H
#define CCH_USERPASSWORD_MAX_LENGTH 16
#define CCH_USERNAME_MAX_LENGTH CCH_IDENTITY_NAME_MAX_LENGTH
typedef struct
{
BOOL fUsePassword;
BOOL fPasswordValid;
GUID uidUserID;
TCHAR szUsername[CCH_USERNAME_MAX_LENGTH];
TCHAR szPassword[CCH_USERPASSWORD_MAX_LENGTH];
}USERINFO, *LPUSERINFO;
typedef struct
{
TCHAR szUsername[CCH_USERNAME_MAX_LENGTH];
BOOL fDeleteMessages;
}DELETEUSERDIALOGINFO, *LPDELETEUSERDIALOGINFO;
typedef struct
{
TCHAR szPassword[CCH_USERPASSWORD_MAX_LENGTH];
TCHAR szMsg[255];
}CONFIRMPWDDIALOGINFO, *LPCONFIRMPWDDIALOGINFO;
typedef struct
{
BOOL fUsePassword;
TCHAR szPassword[CCH_USERPASSWORD_MAX_LENGTH];
}PASSWORD_STORE;
#define ID_LOGIN_AS_LAST 0
#define ID_LOGIN_ASK_ME 1
#define ASK_BEFORE_LOGIN (0xffffffff)
class CStringList
{
public:
CStringList();
virtual ~CStringList();
inline int GetLength (void) {return m_count;}
void AddString (TCHAR* lpszInString);
void RemoveString (int iIndex);
TCHAR* GetString (int iIndex);
void Sort ();
private:
int m_count;
int m_ptrCount;
TCHAR** m_strings;
};
EXTERN_C void MU_Init();
CStringList* MU_GetUsernameList(void);
HRESULT MU_UsernameToUserId(TCHAR *lpszUsername, GUID *puidUserId);
BOOL MU_GetPasswordForUsername(TCHAR *lpszInUsername, TCHAR *szOutPassword, BOOL *pfUsePassword);
BOOL MU_UsernameExists(TCHAR* lpszUsername);
BOOL MU_GetUserInfo(GUID *puidUserId, LPUSERINFO lpUserInfo);
BOOL MU_SetUserInfo(LPUSERINFO lpUserInfo);
HRESULT MU_SwitchToUser(TCHAR *lpszUsername);
void MU_SwitchToLastUser();
HRESULT MU_GetUserDirectoryRoot(GUID *uidUserID, DWORD dwFlags, WCHAR *lpszUserRoot, int cch);
ULONG MU_CountUsers(void);
HRESULT MU_GetRegRootForUserID(GUID *puidUserId, LPSTR pszPath);
HRESULT MU_CreateUser(LPUSERINFO lpUserInfo);
HRESULT MU_DeleteUser(GUID *puidUserId);
LPCTSTR MU_GetRegRoot();
HRESULT MU_MakeDefaultUser(GUID *puidUserId);
BOOL MU_GetCurrentUserID(GUID *puidUserId);
BOOL MU_GetDefaultUserID(GUID *puidUserId);
BOOL MU_UserIdToUsername(GUID *puidUserId, TCHAR *lpszUsername, ULONG cch);
BOOL MU_IdentitiesDisabled();
DWORD MU_GetDefaultOptionIndex(HWND hwndCombo);
DWORD MU_GetLoginOptionIndex(HWND hwndCombo);
void MU_GetLoginOption(GUID *puidStartAs);
BOOL MU_SetLoginOption(HWND hwndCombo, LRESULT dOption);
BOOL MU_CanEditIdentity(HWND hwndParent, GUID *puidIdentityId);
DWORD MU_GenerateDirectoryNameForIdentity(GUID *puidIdentityId);
HRESULT MU_GetDirectoryIdForIdentity(GUID *puidIdentityId, DWORD *pdwDirId);
HRESULT MU_GetDirectoryIdForIdentity(GUID *puidIdentityId, DWORD *pdwDirId);
HRESULT _ClaimNextUserId(GUID *puidUserId);
void _MakeDefaultFirstUser();
BOOL _FillListBoxWithUsernames(HWND hListbox);
BOOL _FillComboBoxWithUsernames(HWND hCombobox, HWND hListbox);
void _ResetRememberedLoginOption(void);
void _RememberLoginOption(HWND hwndCombo);
void _MigratePasswords();
#endif _MULTIUSR_H