// // Debug message types // #define DM_WARNING 0 #define DM_ASSERT 1 #define DM_VERBOSE 2 // // Debug macros // #ifdef DBG #define DEBUGMSG(x) _DebugMsg x VOID _DebugMsg(UINT mask, PCSTR pszMsg, ...); #define DMASSERT(x) if (!(x)) \ _DebugMsg(DM_ASSERT,"profmap.dll assertion " #x " failed\n, line %u of %s", __LINE__, TEXT(__FILE__)); #else #define DEBUGMSG(x) #define DMASSERT(x) #endif // // userenv.c // BOOL OurConvertSidToStringSid (PSID Sid, PWSTR *SidString); VOID DeleteSidString (PWSTR SidString); BOOL RegDelnode (HKEY KeyRoot, PWSTR SubKey); PACL CreateDefaultAcl ( PSID pSid ); VOID FreeDefaultAcl ( PACL Acl OPTIONAL ); BOOL GetProfileRoot ( IN PSID Sid, OUT PWSTR ProfileDir ); #define USER_PROFILE_MUTEX TEXT("Global\\userenv: User Profile Mutex for ") #define PROFILE_LIST_PATH TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList") #define PROFILE_IMAGE_VALUE_NAME TEXT("ProfileImagePath") #define PROFILE_GUID TEXT("Guid") #define PROFILE_GUID_PATH TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\ProfileGuid") #define WINDOWS_POLICIES_KEY TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Policies") #define ROOT_POLICIES_KEY TEXT("Software\\Policies") BOOL UpdateProfileSecurity ( PSID Sid ); BOOL DeleteProfileRegistrySettings (LPTSTR lpSidString); PSID GetUserSid (HANDLE UserToken); VOID DeleteUserSid(PSID Sid); #define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0])) LONG MyRegLoadKey(HKEY hKey, LPTSTR lpSubKey, LPTSTR lpFile); BOOL MyRegUnLoadKey(HKEY hKey, LPTSTR lpSubKey); BOOL SetupNewHive(LPTSTR lpSidString, PSID pSid); DWORD ApplySecurityToRegistryTree(HKEY RootKey, PSECURITY_DESCRIPTOR pSD); BOOL SecureUserKey(LPTSTR lpKey, PSID pSid); LPWSTR ProduceWFromA(LPCSTR pszA); BOOL IsUserAnAdminMember(HANDLE hToken); // // Stuff lifted from win9x upgrade code // #define MemAlloc(s) LocalAlloc(LPTR,s) #define MemReAlloc(x,s) LocalReAlloc(x,s,LMEM_MOVEABLE) #define MemFree(x) LocalFree(x) typedef struct { PBYTE Buf; DWORD Size; DWORD End; DWORD GrowSize; DWORD UserIndex; // Unused by Growbuf. For caller use. } GROWBUFFER, *PGROWBUFFER; #define GROWBUF_INIT {NULL,0,0,0,0} PBYTE GrowBuffer ( IN OUT PGROWBUFFER GrowBuf, IN DWORD SpaceNeeded ); VOID FreeGrowBuffer ( IN PGROWBUFFER GrowBuf ); typedef struct { GROWBUFFER ListArray; POOLHANDLE ListData; } GROWLIST, *PGROWLIST; #define GROWLIST_INIT {GROWBUF_INIT, NULL} VOID FreeGrowList ( IN PGROWLIST GrowList ); PBYTE GrowListAppend ( IN OUT PGROWLIST GrowList, IN PBYTE DataToAppend, OPTIONAL IN UINT SizeOfData ); PBYTE RealGrowListAppendAddNul ( IN OUT PGROWLIST GrowList, IN PBYTE DataToAppend, OPTIONAL IN UINT SizeOfData ); #define GrowListAppendAddNul(list,data,size) RealGrowListAppendAddNul (list,data,size) PBYTE GrowListGetItem ( IN PGROWLIST GrowList, IN UINT Index ); UINT GrowListGetSize ( IN PGROWLIST GrowList ); PWSTR GetEndOfStringW ( PCWSTR p ); PWSTR StringCopyABW ( OUT PWSTR Buf, IN PCWSTR a, IN PCWSTR b ); UINT SizeOfStringW ( PCWSTR str ); __inline PCWSTR RealGrowListAppendStringABW ( IN OUT PGROWLIST GrowList, IN PCWSTR String, IN PCWSTR End ) { return (PCWSTR) GrowListAppendAddNul ( GrowList, (PBYTE) String, String < End ? (UINT)((PBYTE) End - (PBYTE) String) : 0 ); } #define GrowListAppendStringABW(list,a,b) RealGrowListAppendStringABW(list,a,b) #define GrowListAppendStringW(list,str) GrowListAppendStringABW(list,str,GetEndOfStringW(str)) #define GrowListAppendStringNW(list,str,len) GrowListAppendStringABW(list,str,CharCountToPointerW(str,len)) #define GrowListGetStringW(list,index) (PCWSTR)(GrowListGetItem(list,index)) #define GrowListAppendEmptyItem(list) GrowListAppend (list,NULL,0) #ifdef UNICODE #define GrowListAppendString GrowListAppendStringW #define GrowListAppendStringAB GrowListAppendStringABW #define GrowListAppendStringN GrowListAppendStringNW #define GrowListGetString GrowListGetStringW #endif