/*++ Copyright (c) 1999-2000 Microsoft Corporation Module Name: Helper.h Abstract: Funtion prototype. Author: HueiWang 2/17/2000 --*/ #ifndef __HELPER_H__ #define __HELPER_H__ #include #define MAX_ACCDESCRIPTION_LENGTH 256 #define MAX_HELPACCOUNT_NAME 256 #ifndef __WIN9XBUILD__ #define MAX_HELPACCOUNT_PASSWORD LM20_PWLEN // from lmcons.h #else // keep same max. password length same as NT #define MAX_HELPACCOUNT_PASSWORD 14 #endif typedef HRESULT (WINAPI* RegEnumKeyCallback)( IN HKEY hKey, IN LPTSTR pszKeyName, IN HANDLE userData ); #ifndef __WIN9XBUILD__ #include #endif #ifdef __cplusplus extern "C"{ #endif DWORD GenerateRandomString( IN DWORD dwSizeRandomSeed, IN OUT LPTSTR* pszRandomString ); DWORD GenerateRandomBytes( IN DWORD dwSize, IN OUT LPBYTE pbBuffer ); void UnixTimeToFileTime( time_t t, LPFILETIME pft ); long GetUserTSLogonId(); // // create a random password, buffer must // be at least MAX_HELPACCOUNT_PASSWORD+1 DWORD CreatePassword( TCHAR *pszPassword ); DWORD RegEnumSubKeys( IN HKEY hKey, IN LPCTSTR pszSubKey, IN RegEnumKeyCallback pFunc, IN HANDLE userData ); DWORD RegDelKey( IN HKEY hRegKey, IN LPCTSTR pszSubKey ); DWORD GetUserSid( PBYTE* ppbSid, DWORD* pcbSid ); HRESULT GetUserSidString( OUT CComBSTR& bstrSid ); #ifndef __WIN9XBUILD__ BOOL MyMkTime( IN SYSTEMTIME* pSysTime, OUT FILETIME* pft ); BOOL IsPersonalOrProMachine(); // // Check if a user is in a local group // DWORD IsUserInLocalGroup( IN PBYTE pbUserSid, IN LPCTSTR pszLocalGroup, OUT BOOL* pbInGroup ); // // Create a local account // DWORD CreateLocalAccount( IN LPWSTR pszUserName, IN LPWSTR pszUserPwd, IN LPWSTR pszUserFullName, IN LPWSTR pszUserDesc, IN LPWSTR pszGroupName, IN LPWSTR pszScript, OUT BOOL* pbAccountExists ); // // Check if a user account is enabled. // DWORD IsLocalAccountEnabled( IN LPWSTR pszUserName, IN BOOL* pEnabled ); // // Rename local account // DWORD RenameLocalAccount( IN LPWSTR pszOrgName, IN LPWSTR pszNewName ); DWORD UpdateLocalAccountFullnameAndDesc( IN LPWSTR pszAccOrgName, IN LPWSTR pszAccFullName, IN LPWSTR pszAccDesc ); // // Enable/disable a user account // DWORD EnableLocalAccount( IN LPWSTR pszUserName, IN BOOL bEnable ); // // Change local account password // DWORD ChangeLocalAccountPassword( IN LPWSTR pszUserName, IN LPWSTR pszOldPwd, IN LPWSTR pszNewPwd ); // // Check if a specific group exist // on local machine. // BOOL IsLocalGroupExists( IN LPWSTR pszGroupName ); // // Create a local group // DWORD CreateLocalGroup( IN LPWSTR pszGroupName, IN LPWSTR pszGroupDesc, IN BOOL bAddEveryone ); // // Validate a user password // BOOL ValidatePassword( IN LPWSTR UserName, IN LPWSTR Domain, IN LPWSTR Password ); // // Retrieve private data saved to LSA // DWORD RetrieveKeyFromLSA( PWCHAR pwszKeyName, PBYTE * ppbKey, DWORD * pcbKey ); // // Save private data to LSA // DWORD StoreKeyWithLSA( PWCHAR pwszKeyName, BYTE * pbKey, DWORD cbKey ); // // Open LSA policy // DWORD OpenPolicy( LPWSTR ServerName, DWORD DesiredAccess, PLSA_HANDLE PolicyHandle ); // // Initialize LSA string // void InitLsaString( PLSA_UNICODE_STRING LsaString, LPWSTR String ); #ifdef DBG void DebugPrintf( IN LPCTSTR format, ... ); #else #define DebugPrintf #endif //PRIVATE_DEBUG // // Convert a user SID to string form // BOOL GetTextualSid( IN PSID pSid, IN OUT LPTSTR TextualSid, IN OUT LPDWORD lpdwBufferLen ); DWORD IsUserAdmin( BOOL* bMember ); BOOL LookupAliasFromRid( LPWSTR pTargetComputer, DWORD Rid, LPWSTR pName, PDWORD cchName ); #else #define DebugPrintf #endif #ifdef __cplusplus } #endif #endif