Author: dchapyshev
Date: Wed Feb 18 10:34:10 2009
New Revision: 39661
URL:
http://svn.reactos.org/svn/reactos?rev=39661&view=rev
Log:
- Formatting fix. No code changes
Modified:
trunk/reactos/dll/win32/userenv/profile.c
Modified: trunk/reactos/dll/win32/userenv/profile.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/userenv/profile.…
==============================================================================
--- trunk/reactos/dll/win32/userenv/profile.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/userenv/profile.c [iso-8859-1] Wed Feb 18 10:34:10 2009
@@ -33,76 +33,76 @@
/* FUNCTIONS ***************************************************************/
BOOL
-AppendSystemPostfix (LPWSTR lpName,
- DWORD dwMaxLength)
-{
- WCHAR szSystemRoot[MAX_PATH];
- LPWSTR lpszPostfix;
- LPWSTR lpszPtr;
-
- /* Build profile name postfix */
- if (!ExpandEnvironmentStringsW (L"%SystemRoot%",
- szSystemRoot,
- MAX_PATH))
- {
- DPRINT1("Error: %lu\n", GetLastError());
- return FALSE;
- }
-
- _wcsupr (szSystemRoot);
-
- /* Get name postfix */
- szSystemRoot[2] = L'.';
- lpszPostfix = &szSystemRoot[2];
- lpszPtr = lpszPostfix;
- while (*lpszPtr != (WCHAR)0)
- {
- if (*lpszPtr == L'\\')
- *lpszPtr = '_';
- lpszPtr++;
- }
-
- if (wcslen(lpName) + wcslen(lpszPostfix) + 1 >= dwMaxLength)
- {
- DPRINT1("Error: buffer overflow\n");
- SetLastError(ERROR_BUFFER_OVERFLOW);
- return FALSE;
- }
-
- wcscat(lpName, lpszPostfix);
-
- return TRUE;
-}
-
-
-BOOL WINAPI
-CreateUserProfileA (PSID Sid,
- LPCSTR lpUserName)
-{
- UNICODE_STRING UserName;
- BOOL bResult;
- NTSTATUS Status;
-
- Status = RtlCreateUnicodeStringFromAsciiz (&UserName,
- (LPSTR)lpUserName);
- if (!NT_SUCCESS(Status))
- {
- SetLastError (RtlNtStatusToDosError (Status));
- return FALSE;
- }
-
- bResult = CreateUserProfileW (Sid,
- UserName.Buffer);
-
- RtlFreeUnicodeString (&UserName);
-
- return bResult;
-}
-
-
-static BOOL
-AcquireRemoveRestorePrivilege(
- IN BOOL bAcquire)
+AppendSystemPostfix(LPWSTR lpName,
+ DWORD dwMaxLength)
+{
+ WCHAR szSystemRoot[MAX_PATH];
+ LPWSTR lpszPostfix;
+ LPWSTR lpszPtr;
+
+ /* Build profile name postfix */
+ if (!ExpandEnvironmentStringsW(L"%SystemRoot%",
+ szSystemRoot,
+ MAX_PATH))
+ {
+ DPRINT1("Error: %lu\n", GetLastError());
+ return FALSE;
+ }
+
+ _wcsupr(szSystemRoot);
+
+ /* Get name postfix */
+ szSystemRoot[2] = L'.';
+ lpszPostfix = &szSystemRoot[2];
+ lpszPtr = lpszPostfix;
+ while (*lpszPtr != (WCHAR)0)
+ {
+ if (*lpszPtr == L'\\')
+ *lpszPtr = '_';
+ lpszPtr++;
+ }
+
+ if (wcslen(lpName) + wcslen(lpszPostfix) + 1 >= dwMaxLength)
+ {
+ DPRINT1("Error: buffer overflow\n");
+ SetLastError(ERROR_BUFFER_OVERFLOW);
+ return FALSE;
+ }
+
+ wcscat(lpName, lpszPostfix);
+
+ return TRUE;
+}
+
+
+BOOL
+WINAPI
+CreateUserProfileA(PSID Sid,
+ LPCSTR lpUserName)
+{
+ UNICODE_STRING UserName;
+ BOOL bResult;
+ NTSTATUS Status;
+
+ Status = RtlCreateUnicodeStringFromAsciiz(&UserName,
+ (LPSTR)lpUserName);
+ if (!NT_SUCCESS(Status))
+ {
+ SetLastError(RtlNtStatusToDosError(Status));
+ return FALSE;
+ }
+
+ bResult = CreateUserProfileW(Sid, UserName.Buffer);
+
+ RtlFreeUnicodeString(&UserName);
+
+ return bResult;
+}
+
+
+static
+BOOL
+AcquireRemoveRestorePrivilege(IN BOOL bAcquire)
{
HANDLE Process;
HANDLE Token;
@@ -161,751 +161,760 @@
}
-BOOL WINAPI
-CreateUserProfileW (PSID Sid,
- LPCWSTR lpUserName)
-{
- WCHAR szRawProfilesPath[MAX_PATH];
- WCHAR szProfilesPath[MAX_PATH];
- WCHAR szUserProfilePath[MAX_PATH];
- WCHAR szDefaultUserPath[MAX_PATH];
- WCHAR szBuffer[MAX_PATH];
- LPWSTR SidString;
- DWORD dwLength;
- DWORD dwDisposition;
- HKEY hKey;
- LONG Error;
-
- DPRINT("CreateUserProfileW() called\n");
-
- Error = RegOpenKeyExW (HKEY_LOCAL_MACHINE,
- L"SOFTWARE\\Microsoft\\Windows
NT\\CurrentVersion\\ProfileList",
- 0,
- KEY_QUERY_VALUE,
- &hKey);
- if (Error != ERROR_SUCCESS)
- {
- DPRINT1("Error: %lu\n", Error);
- SetLastError((DWORD)Error);
- return FALSE;
- }
-
- /* Get profiles path */
- dwLength = MAX_PATH * sizeof(WCHAR);
- Error = RegQueryValueExW (hKey,
- L"ProfilesDirectory",
- NULL,
- NULL,
- (LPBYTE)szRawProfilesPath,
- &dwLength);
- if (Error != ERROR_SUCCESS)
- {
- DPRINT1("Error: %lu\n", Error);
- RegCloseKey (hKey);
- SetLastError((DWORD)Error);
- return FALSE;
- }
-
- /* Expand it */
- if (!ExpandEnvironmentStringsW (szRawProfilesPath,
- szProfilesPath,
- MAX_PATH))
- {
- DPRINT1("Error: %lu\n", GetLastError());
- RegCloseKey (hKey);
- return FALSE;
- }
-
- /* create the profiles directory if it does not yet exist */
- if (!CreateDirectoryW(szProfilesPath, NULL))
- {
- if (GetLastError () != ERROR_ALREADY_EXISTS)
- {
+BOOL
+WINAPI
+CreateUserProfileW(PSID Sid,
+ LPCWSTR lpUserName)
+{
+ WCHAR szRawProfilesPath[MAX_PATH];
+ WCHAR szProfilesPath[MAX_PATH];
+ WCHAR szUserProfilePath[MAX_PATH];
+ WCHAR szDefaultUserPath[MAX_PATH];
+ WCHAR szBuffer[MAX_PATH];
+ LPWSTR SidString;
+ DWORD dwLength;
+ DWORD dwDisposition;
+ HKEY hKey;
+ LONG Error;
+
+ DPRINT("CreateUserProfileW() called\n");
+
+ Error = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
+ L"SOFTWARE\\Microsoft\\Windows
NT\\CurrentVersion\\ProfileList",
+ 0,
+ KEY_QUERY_VALUE,
+ &hKey);
+ if (Error != ERROR_SUCCESS)
+ {
+ DPRINT1("Error: %lu\n", Error);
+ SetLastError((DWORD)Error);
+ return FALSE;
+ }
+
+ /* Get profiles path */
+ dwLength = MAX_PATH * sizeof(WCHAR);
+ Error = RegQueryValueExW(hKey,
+ L"ProfilesDirectory",
+ NULL,
+ NULL,
+ (LPBYTE)szRawProfilesPath,
+ &dwLength);
+ if (Error != ERROR_SUCCESS)
+ {
+ DPRINT1("Error: %lu\n", Error);
+ RegCloseKey(hKey);
+ SetLastError((DWORD)Error);
+ return FALSE;
+ }
+
+ /* Expand it */
+ if (!ExpandEnvironmentStringsW(szRawProfilesPath,
+ szProfilesPath,
+ MAX_PATH))
+ {
DPRINT1("Error: %lu\n", GetLastError());
- return FALSE;
- }
- }
-
- /* Get default user path */
- dwLength = MAX_PATH * sizeof(WCHAR);
- Error = RegQueryValueExW (hKey,
- L"DefaultUserProfile",
- NULL,
- NULL,
- (LPBYTE)szBuffer,
- &dwLength);
- if (Error != ERROR_SUCCESS)
- {
- DPRINT1("Error: %lu\n", Error);
- RegCloseKey (hKey);
- SetLastError((DWORD)Error);
- return FALSE;
- }
-
- RegCloseKey (hKey);
-
- wcscpy (szUserProfilePath, szProfilesPath);
- wcscat (szUserProfilePath, L"\\");
- wcscat (szUserProfilePath, lpUserName);
- if (!AppendSystemPostfix (szUserProfilePath, MAX_PATH))
- {
- DPRINT1("AppendSystemPostfix() failed\n", GetLastError());
- return FALSE;
- }
-
- wcscpy (szDefaultUserPath, szProfilesPath);
- wcscat (szDefaultUserPath, L"\\");
- wcscat (szDefaultUserPath, szBuffer);
-
- /* Create user profile directory */
- if (!CreateDirectoryW (szUserProfilePath, NULL))
- {
- if (GetLastError () != ERROR_ALREADY_EXISTS)
- {
- DPRINT1("Error: %lu\n", GetLastError());
- return FALSE;
- }
- }
-
- /* Copy default user directory */
- if (!CopyDirectory (szUserProfilePath, szDefaultUserPath))
- {
- DPRINT1("Error: %lu\n", GetLastError());
- return FALSE;
- }
-
- /* Add profile to profile list */
- if (!ConvertSidToStringSidW (Sid,
- &SidString))
- {
- DPRINT1("Error: %lu\n", GetLastError());
- return FALSE;
- }
-
- wcscpy (szBuffer,
- L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList\\");
- wcscat (szBuffer, SidString);
-
- /* Create user profile key */
- Error = RegCreateKeyExW (HKEY_LOCAL_MACHINE,
- szBuffer,
- 0,
- NULL,
- REG_OPTION_NON_VOLATILE,
- KEY_ALL_ACCESS,
- NULL,
- &hKey,
- &dwDisposition);
- if (Error != ERROR_SUCCESS)
- {
- DPRINT1("Error: %lu\n", Error);
- LocalFree ((HLOCAL)SidString);
- SetLastError((DWORD)Error);
- return FALSE;
- }
-
- /* Create non-expanded user profile path */
- wcscpy (szBuffer, szRawProfilesPath);
- wcscat (szBuffer, L"\\");
- wcscat (szBuffer, lpUserName);
- if (!AppendSystemPostfix (szBuffer, MAX_PATH))
- {
- DPRINT1("AppendSystemPostfix() failed\n", GetLastError());
- LocalFree ((HLOCAL)SidString);
- RegCloseKey (hKey);
- return FALSE;
- }
-
- /* Set 'ProfileImagePath' value (non-expanded) */
- Error = RegSetValueExW (hKey,
- L"ProfileImagePath",
- 0,
- REG_EXPAND_SZ,
- (LPBYTE)szBuffer,
- (wcslen (szBuffer) + 1) * sizeof(WCHAR));
- if (Error != ERROR_SUCCESS)
- {
- DPRINT1("Error: %lu\n", Error);
- LocalFree ((HLOCAL)SidString);
- RegCloseKey (hKey);
- SetLastError((DWORD)Error);
- return FALSE;
- }
-
- /* Set 'Sid' value */
- Error = RegSetValueExW (hKey,
- L"Sid",
- 0,
- REG_BINARY,
- Sid,
- GetLengthSid (Sid));
- if (Error != ERROR_SUCCESS)
- {
- DPRINT1("Error: %lu\n", Error);
- LocalFree ((HLOCAL)SidString);
- RegCloseKey (hKey);
- SetLastError((DWORD)Error);
- return FALSE;
- }
-
- RegCloseKey (hKey);
-
- /* Create user hive name */
- wcscpy (szBuffer, szUserProfilePath);
- wcscat (szBuffer, L"\\ntuser.dat");
-
- /* Acquire restore privilege */
- if (!AcquireRemoveRestorePrivilege(TRUE))
- {
- DPRINT1("Error: %lu\n", Error);
- LocalFree ((HLOCAL)SidString);
- return FALSE;
- }
-
- /* Create new user hive */
- Error = RegLoadKeyW (HKEY_USERS,
- SidString,
- szBuffer);
- AcquireRemoveRestorePrivilege(FALSE);
- if (Error != ERROR_SUCCESS)
- {
- DPRINT1("Error: %lu\n", Error);
- LocalFree ((HLOCAL)SidString);
- SetLastError((DWORD)Error);
- return FALSE;
- }
-
- /* Initialize user hive */
- if (!CreateUserHive (SidString, szUserProfilePath))
- {
- DPRINT1("Error: %lu\n", GetLastError());
- LocalFree ((HLOCAL)SidString);
- return FALSE;
- }
-
- RegUnLoadKeyW (HKEY_USERS,
- SidString);
-
- LocalFree ((HLOCAL)SidString);
-
- DPRINT("CreateUserProfileW() done\n");
-
- return TRUE;
-}
-
-
-BOOL WINAPI
-GetAllUsersProfileDirectoryA (LPSTR lpProfileDir,
- LPDWORD lpcchSize)
-{
- LPWSTR lpBuffer;
- BOOL bResult;
-
- lpBuffer = GlobalAlloc (GMEM_FIXED,
- *lpcchSize * sizeof(WCHAR));
- if (lpBuffer == NULL)
+ RegCloseKey(hKey);
+ return FALSE;
+ }
+
+ /* create the profiles directory if it does not yet exist */
+ if (!CreateDirectoryW(szProfilesPath, NULL))
+ {
+ if (GetLastError() != ERROR_ALREADY_EXISTS)
+ {
+ DPRINT1("Error: %lu\n", GetLastError());
+ return FALSE;
+ }
+ }
+
+ /* Get default user path */
+ dwLength = MAX_PATH * sizeof(WCHAR);
+ Error = RegQueryValueExW(hKey,
+ L"DefaultUserProfile",
+ NULL,
+ NULL,
+ (LPBYTE)szBuffer,
+ &dwLength);
+ if (Error != ERROR_SUCCESS)
+ {
+ DPRINT1("Error: %lu\n", Error);
+ RegCloseKey(hKey);
+ SetLastError((DWORD)Error);
+ return FALSE;
+ }
+
+ RegCloseKey (hKey);
+
+ wcscpy(szUserProfilePath, szProfilesPath);
+ wcscat(szUserProfilePath, L"\\");
+ wcscat(szUserProfilePath, lpUserName);
+ if (!AppendSystemPostfix(szUserProfilePath, MAX_PATH))
+ {
+ DPRINT1("AppendSystemPostfix() failed\n", GetLastError());
+ return FALSE;
+ }
+
+ wcscpy(szDefaultUserPath, szProfilesPath);
+ wcscat(szDefaultUserPath, L"\\");
+ wcscat(szDefaultUserPath, szBuffer);
+
+ /* Create user profile directory */
+ if (!CreateDirectoryW(szUserProfilePath, NULL))
+ {
+ if (GetLastError() != ERROR_ALREADY_EXISTS)
+ {
+ DPRINT1("Error: %lu\n", GetLastError());
+ return FALSE;
+ }
+ }
+
+ /* Copy default user directory */
+ if (!CopyDirectory(szUserProfilePath, szDefaultUserPath))
+ {
+ DPRINT1("Error: %lu\n", GetLastError());
+ return FALSE;
+ }
+
+ /* Add profile to profile list */
+ if (!ConvertSidToStringSidW(Sid,
+ &SidString))
+ {
+ DPRINT1("Error: %lu\n", GetLastError());
+ return FALSE;
+ }
+
+ wcscpy(szBuffer,
+ L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList\\");
+ wcscat(szBuffer, SidString);
+
+ /* Create user profile key */
+ Error = RegCreateKeyExW(HKEY_LOCAL_MACHINE,
+ szBuffer,
+ 0,
+ NULL,
+ REG_OPTION_NON_VOLATILE,
+ KEY_ALL_ACCESS,
+ NULL,
+ &hKey,
+ &dwDisposition);
+ if (Error != ERROR_SUCCESS)
+ {
+ DPRINT1("Error: %lu\n", Error);
+ LocalFree((HLOCAL)SidString);
+ SetLastError((DWORD)Error);
+ return FALSE;
+ }
+
+ /* Create non-expanded user profile path */
+ wcscpy(szBuffer, szRawProfilesPath);
+ wcscat(szBuffer, L"\\");
+ wcscat(szBuffer, lpUserName);
+ if (!AppendSystemPostfix(szBuffer, MAX_PATH))
+ {
+ DPRINT1("AppendSystemPostfix() failed\n", GetLastError());
+ LocalFree((HLOCAL)SidString);
+ RegCloseKey (hKey);
+ return FALSE;
+ }
+
+ /* Set 'ProfileImagePath' value (non-expanded) */
+ Error = RegSetValueExW(hKey,
+ L"ProfileImagePath",
+ 0,
+ REG_EXPAND_SZ,
+ (LPBYTE)szBuffer,
+ (wcslen (szBuffer) + 1) * sizeof(WCHAR));
+ if (Error != ERROR_SUCCESS)
+ {
+ DPRINT1("Error: %lu\n", Error);
+ LocalFree((HLOCAL)SidString);
+ RegCloseKey(hKey);
+ SetLastError((DWORD)Error);
+ return FALSE;
+ }
+
+ /* Set 'Sid' value */
+ Error = RegSetValueExW(hKey,
+ L"Sid",
+ 0,
+ REG_BINARY,
+ Sid,
+ GetLengthSid(Sid));
+ if (Error != ERROR_SUCCESS)
+ {
+ DPRINT1("Error: %lu\n", Error);
+ LocalFree((HLOCAL)SidString);
+ RegCloseKey(hKey);
+ SetLastError((DWORD)Error);
+ return FALSE;
+ }
+
+ RegCloseKey (hKey);
+
+ /* Create user hive name */
+ wcscpy(szBuffer, szUserProfilePath);
+ wcscat(szBuffer, L"\\ntuser.dat");
+
+ /* Acquire restore privilege */
+ if (!AcquireRemoveRestorePrivilege(TRUE))
+ {
+ DPRINT1("Error: %lu\n", Error);
+ LocalFree((HLOCAL)SidString);
+ return FALSE;
+ }
+
+ /* Create new user hive */
+ Error = RegLoadKeyW(HKEY_USERS,
+ SidString,
+ szBuffer);
+ AcquireRemoveRestorePrivilege(FALSE);
+ if (Error != ERROR_SUCCESS)
+ {
+ DPRINT1("Error: %lu\n", Error);
+ LocalFree((HLOCAL)SidString);
+ SetLastError((DWORD)Error);
+ return FALSE;
+ }
+
+ /* Initialize user hive */
+ if (!CreateUserHive(SidString, szUserProfilePath))
+ {
+ DPRINT1("Error: %lu\n", GetLastError());
+ LocalFree((HLOCAL)SidString);
+ return FALSE;
+ }
+
+ RegUnLoadKeyW(HKEY_USERS, SidString);
+
+ LocalFree((HLOCAL)SidString);
+
+ DPRINT("CreateUserProfileW() done\n");
+
+ return TRUE;
+}
+
+
+BOOL
+WINAPI
+GetAllUsersProfileDirectoryA(LPSTR lpProfileDir,
+ LPDWORD lpcchSize)
+{
+ LPWSTR lpBuffer;
+ BOOL bResult;
+
+ lpBuffer = GlobalAlloc(GMEM_FIXED,
+ *lpcchSize * sizeof(WCHAR));
+ if (lpBuffer == NULL)
+ return FALSE;
+
+ bResult = GetAllUsersProfileDirectoryW(lpBuffer,
+ lpcchSize);
+ if (bResult)
+ {
+ WideCharToMultiByte(CP_ACP,
+ 0,
+ lpBuffer,
+ -1,
+ lpProfileDir,
+ *lpcchSize,
+ NULL,
+ NULL);
+ }
+
+ GlobalFree(lpBuffer);
+
+ return bResult;
+}
+
+
+BOOL
+WINAPI
+GetAllUsersProfileDirectoryW(LPWSTR lpProfileDir,
+ LPDWORD lpcchSize)
+{
+ WCHAR szProfilePath[MAX_PATH];
+ WCHAR szBuffer[MAX_PATH];
+ DWORD dwLength;
+ HKEY hKey;
+ LONG Error;
+
+ Error = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
+ L"SOFTWARE\\Microsoft\\Windows
NT\\CurrentVersion\\ProfileList",
+ 0,
+ KEY_QUERY_VALUE,
+ &hKey);
+ if (Error != ERROR_SUCCESS)
+ {
+ DPRINT1("Error: %lu\n", Error);
+ SetLastError((DWORD)Error);
+ return FALSE;
+ }
+
+ /* Get profiles path */
+ dwLength = sizeof(szBuffer);
+ Error = RegQueryValueExW(hKey,
+ L"ProfilesDirectory",
+ NULL,
+ NULL,
+ (LPBYTE)szBuffer,
+ &dwLength);
+ if (Error != ERROR_SUCCESS)
+ {
+ DPRINT1("Error: %lu\n", Error);
+ RegCloseKey(hKey);
+ SetLastError((DWORD)Error);
+ return FALSE;
+ }
+
+ /* Expand it */
+ if (!ExpandEnvironmentStringsW(szBuffer,
+ szProfilePath,
+ MAX_PATH))
+ {
+ DPRINT1("Error: %lu\n", GetLastError());
+ RegCloseKey (hKey);
+ return FALSE;
+ }
+
+ /* Get 'AllUsersProfile' name */
+ dwLength = sizeof(szBuffer);
+ Error = RegQueryValueExW(hKey,
+ L"AllUsersProfile",
+ NULL,
+ NULL,
+ (LPBYTE)szBuffer,
+ &dwLength);
+ if (Error != ERROR_SUCCESS)
+ {
+ DPRINT1("Error: %lu\n", Error);
+ RegCloseKey(hKey);
+ SetLastError((DWORD)Error);
+ return FALSE;
+ }
+
+ RegCloseKey (hKey);
+
+ wcscat(szProfilePath, L"\\");
+ wcscat(szProfilePath, szBuffer);
+
+ dwLength = wcslen(szProfilePath) + 1;
+ if (lpProfileDir != NULL)
+ {
+ if (*lpcchSize < dwLength)
+ {
+ *lpcchSize = dwLength;
+ SetLastError(ERROR_INSUFFICIENT_BUFFER);
+ return FALSE;
+ }
+
+ wcscpy(lpProfileDir, szProfilePath);
+ }
+
+ *lpcchSize = dwLength;
+
+ return TRUE;
+}
+
+
+BOOL
+WINAPI
+GetDefaultUserProfileDirectoryA(LPSTR lpProfileDir,
+ LPDWORD lpcchSize)
+{
+ LPWSTR lpBuffer;
+ BOOL bResult;
+
+ lpBuffer = GlobalAlloc(GMEM_FIXED,
+ *lpcchSize * sizeof(WCHAR));
+ if (lpBuffer == NULL)
+ return FALSE;
+
+ bResult = GetDefaultUserProfileDirectoryW(lpBuffer,
+ lpcchSize);
+ if (bResult)
+ {
+ WideCharToMultiByte(CP_ACP,
+ 0,
+ lpBuffer,
+ -1,
+ lpProfileDir,
+ *lpcchSize,
+ NULL,
+ NULL);
+ }
+
+ GlobalFree(lpBuffer);
+
+ return bResult;
+}
+
+
+BOOL
+WINAPI
+GetDefaultUserProfileDirectoryW(LPWSTR lpProfileDir,
+ LPDWORD lpcchSize)
+{
+ WCHAR szProfilePath[MAX_PATH];
+ WCHAR szBuffer[MAX_PATH];
+ DWORD dwLength;
+ HKEY hKey;
+ LONG Error;
+
+ Error = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
+ L"SOFTWARE\\Microsoft\\Windows
NT\\CurrentVersion\\ProfileList",
+ 0,
+ KEY_QUERY_VALUE,
+ &hKey);
+ if (Error != ERROR_SUCCESS)
+ {
+ DPRINT1("Error: %lu\n", Error);
+ SetLastError((DWORD)Error);
+ return FALSE;
+ }
+
+ /* Get profiles path */
+ dwLength = sizeof(szBuffer);
+ Error = RegQueryValueExW(hKey,
+ L"ProfilesDirectory",
+ NULL,
+ NULL,
+ (LPBYTE)szBuffer,
+ &dwLength);
+ if (Error != ERROR_SUCCESS)
+ {
+ DPRINT1("Error: %lu\n", Error);
+ RegCloseKey(hKey);
+ SetLastError((DWORD)Error);
+ return FALSE;
+ }
+
+ /* Expand it */
+ if (!ExpandEnvironmentStringsW(szBuffer,
+ szProfilePath,
+ MAX_PATH))
+ {
+ DPRINT1("Error: %lu\n", GetLastError());
+ RegCloseKey(hKey);
+ return FALSE;
+ }
+
+ /* Get 'DefaultUserProfile' name */
+ dwLength = sizeof(szBuffer);
+ Error = RegQueryValueExW(hKey,
+ L"DefaultUserProfile",
+ NULL,
+ NULL,
+ (LPBYTE)szBuffer,
+ &dwLength);
+ if (Error != ERROR_SUCCESS)
+ {
+ DPRINT1("Error: %lu\n", Error);
+ RegCloseKey(hKey);
+ SetLastError((DWORD)Error);
+ return FALSE;
+ }
+
+ RegCloseKey(hKey);
+
+ wcscat(szProfilePath, L"\\");
+ wcscat(szProfilePath, szBuffer);
+
+ dwLength = wcslen(szProfilePath) + 1;
+ if (lpProfileDir != NULL)
+ {
+ if (*lpcchSize < dwLength)
+ {
+ *lpcchSize = dwLength;
+ SetLastError(ERROR_INSUFFICIENT_BUFFER);
+ return FALSE;
+ }
+
+ wcscpy(lpProfileDir, szProfilePath);
+ }
+
+ *lpcchSize = dwLength;
+
+ return TRUE;
+}
+
+
+BOOL
+WINAPI
+GetProfilesDirectoryA(LPSTR lpProfileDir,
+ LPDWORD lpcchSize)
+{
+ LPWSTR lpBuffer;
+ BOOL bResult;
+
+ lpBuffer = GlobalAlloc(GMEM_FIXED,
+ *lpcchSize * sizeof(WCHAR));
+ if (lpBuffer == NULL)
+ return FALSE;
+
+ bResult = GetProfilesDirectoryW(lpBuffer,
+ lpcchSize);
+ if (bResult)
+ {
+ WideCharToMultiByte(CP_ACP,
+ 0,
+ lpBuffer,
+ -1,
+ lpProfileDir,
+ *lpcchSize,
+ NULL,
+ NULL);
+ }
+
+ GlobalFree(lpBuffer);
+
+ return bResult;
+}
+
+
+BOOL
+WINAPI
+GetProfilesDirectoryW(LPWSTR lpProfilesDir,
+ LPDWORD lpcchSize)
+{
+ WCHAR szProfilesPath[MAX_PATH];
+ WCHAR szBuffer[MAX_PATH];
+ DWORD dwLength;
+ HKEY hKey;
+ LONG Error;
+
+ Error = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
+ L"SOFTWARE\\Microsoft\\Windows
NT\\CurrentVersion\\ProfileList",
+ 0,
+ KEY_QUERY_VALUE,
+ &hKey);
+ if (Error != ERROR_SUCCESS)
+ {
+ DPRINT1("Error: %lu\n", Error);
+ SetLastError((DWORD)Error);
+ return FALSE;
+ }
+
+ /* Get profiles path */
+ dwLength = sizeof(szBuffer);
+ Error = RegQueryValueExW(hKey,
+ L"ProfilesDirectory",
+ NULL,
+ NULL,
+ (LPBYTE)szBuffer,
+ &dwLength);
+ if (Error != ERROR_SUCCESS)
+ {
+ DPRINT1("Error: %lu\n", Error);
+ RegCloseKey(hKey);
+ SetLastError((DWORD)Error);
+ return FALSE;
+ }
+
+ RegCloseKey(hKey);
+
+ /* Expand it */
+ if (!ExpandEnvironmentStringsW(szBuffer,
+ szProfilesPath,
+ MAX_PATH))
+ {
+ DPRINT1("Error: %lu\n", GetLastError());
+ return FALSE;
+ }
+
+ dwLength = wcslen (szProfilesPath) + 1;
+ if (lpProfilesDir != NULL)
+ {
+ if (*lpcchSize < dwLength)
+ {
+ *lpcchSize = dwLength;
+ SetLastError(ERROR_INSUFFICIENT_BUFFER);
+ return FALSE;
+ }
+
+ wcscpy(lpProfilesDir, szProfilesPath);
+ }
+
+ *lpcchSize = dwLength;
+
+ return TRUE;
+}
+
+
+BOOL
+WINAPI
+GetUserProfileDirectoryA(HANDLE hToken,
+ LPSTR lpProfileDir,
+ LPDWORD lpcchSize)
+{
+ LPWSTR lpBuffer;
+ BOOL bResult;
+
+ lpBuffer = GlobalAlloc(GMEM_FIXED,
+ *lpcchSize * sizeof(WCHAR));
+ if (lpBuffer == NULL)
+ return FALSE;
+
+ bResult = GetUserProfileDirectoryW(hToken,
+ lpBuffer,
+ lpcchSize);
+ if (bResult)
+ {
+ WideCharToMultiByte(CP_ACP,
+ 0,
+ lpBuffer,
+ -1,
+ lpProfileDir,
+ *lpcchSize,
+ NULL,
+ NULL);
+ }
+
+ GlobalFree(lpBuffer);
+
+ return bResult;
+}
+
+
+BOOL
+WINAPI
+GetUserProfileDirectoryW(HANDLE hToken,
+ LPWSTR lpProfileDir,
+ LPDWORD lpcchSize)
+{
+ UNICODE_STRING SidString;
+ WCHAR szKeyName[MAX_PATH];
+ WCHAR szRawImagePath[MAX_PATH];
+ WCHAR szImagePath[MAX_PATH];
+ DWORD dwLength;
+ HKEY hKey;
+ LONG Error;
+
+ if (!GetUserSidFromToken(hToken,
+ &SidString))
+ {
+ DPRINT1("GetUserSidFromToken() failed\n");
+ return FALSE;
+ }
+
+ DPRINT("SidString: '%wZ'\n", &SidString);
+
+ wcscpy(szKeyName,
+ L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList\\");
+ wcscat(szKeyName,
+ SidString.Buffer);
+
+ RtlFreeUnicodeString(&SidString);
+
+ DPRINT("KeyName: '%S'\n", szKeyName);
+
+ Error = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
+ szKeyName,
+ 0,
+ KEY_QUERY_VALUE,
+ &hKey);
+ if (Error != ERROR_SUCCESS)
+ {
+ DPRINT1("Error: %lu\n", Error);
+ SetLastError((DWORD)Error);
+ return FALSE;
+ }
+
+ dwLength = sizeof(szRawImagePath);
+ Error = RegQueryValueExW(hKey,
+ L"ProfileImagePath",
+ NULL,
+ NULL,
+ (LPBYTE)szRawImagePath,
+ &dwLength);
+ if (Error != ERROR_SUCCESS)
+ {
+ DPRINT1("Error: %lu\n", Error);
+ RegCloseKey(hKey);
+ SetLastError((DWORD)Error);
+ return FALSE;
+ }
+
+ RegCloseKey(hKey);
+
+ DPRINT("RawImagePath: '%S'\n", szRawImagePath);
+
+ /* Expand it */
+ if (!ExpandEnvironmentStringsW(szRawImagePath,
+ szImagePath,
+ MAX_PATH))
+ {
+ DPRINT1 ("Error: %lu\n", GetLastError());
+ return FALSE;
+ }
+
+ DPRINT("ImagePath: '%S'\n", szImagePath);
+
+ dwLength = wcslen (szImagePath) + 1;
+ if (*lpcchSize < dwLength)
+ {
+ *lpcchSize = dwLength;
+ SetLastError(ERROR_INSUFFICIENT_BUFFER);
+ return FALSE;
+ }
+
+ *lpcchSize = dwLength;
+ wcscpy(lpProfileDir, szImagePath);
+
+ return TRUE;
+}
+
+
+static
+BOOL
+CheckForLoadedProfile(HANDLE hToken)
+{
+ UNICODE_STRING SidString;
+ HKEY hKey;
+
+ DPRINT("CheckForLoadedProfile() called\n");
+
+ if (!GetUserSidFromToken(hToken,
+ &SidString))
+ {
+ DPRINT1("GetUserSidFromToken() failed\n");
+ return FALSE;
+ }
+
+ if (RegOpenKeyExW(HKEY_USERS,
+ SidString.Buffer,
+ 0,
+ MAXIMUM_ALLOWED,
+ &hKey))
+ {
+ DPRINT("Profile not loaded\n");
+ RtlFreeUnicodeString(&SidString);
+ return FALSE;
+ }
+
+ RegCloseKey(hKey);
+
+ RtlFreeUnicodeString(&SidString);
+
+ DPRINT("Profile already loaded\n");
+
+ return TRUE;
+}
+
+
+BOOL
+WINAPI
+LoadUserProfileA(HANDLE hToken,
+ LPPROFILEINFOA lpProfileInfo)
+{
+ DPRINT ("LoadUserProfileA() not implemented\n");
return FALSE;
-
- bResult = GetAllUsersProfileDirectoryW (lpBuffer,
- lpcchSize);
- if (bResult)
- {
- WideCharToMultiByte (CP_ACP,
- 0,
- lpBuffer,
- -1,
- lpProfileDir,
- *lpcchSize,
- NULL,
- NULL);
- }
-
- GlobalFree (lpBuffer);
-
- return bResult;
-}
-
-
-BOOL WINAPI
-GetAllUsersProfileDirectoryW (LPWSTR lpProfileDir,
- LPDWORD lpcchSize)
-{
- WCHAR szProfilePath[MAX_PATH];
- WCHAR szBuffer[MAX_PATH];
- DWORD dwLength;
- HKEY hKey;
- LONG Error;
-
- Error = RegOpenKeyExW (HKEY_LOCAL_MACHINE,
- L"SOFTWARE\\Microsoft\\Windows
NT\\CurrentVersion\\ProfileList",
- 0,
- KEY_QUERY_VALUE,
- &hKey);
- if (Error != ERROR_SUCCESS)
- {
- DPRINT1("Error: %lu\n", Error);
- SetLastError((DWORD)Error);
- return FALSE;
- }
-
- /* Get profiles path */
- dwLength = sizeof(szBuffer);
- Error = RegQueryValueExW (hKey,
- L"ProfilesDirectory",
- NULL,
- NULL,
- (LPBYTE)szBuffer,
- &dwLength);
- if (Error != ERROR_SUCCESS)
- {
- DPRINT1("Error: %lu\n", Error);
- RegCloseKey (hKey);
- SetLastError((DWORD)Error);
- return FALSE;
- }
-
- /* Expand it */
- if (!ExpandEnvironmentStringsW (szBuffer,
- szProfilePath,
- MAX_PATH))
- {
- DPRINT1("Error: %lu\n", GetLastError());
- RegCloseKey (hKey);
- return FALSE;
- }
-
- /* Get 'AllUsersProfile' name */
- dwLength = sizeof(szBuffer);
- Error = RegQueryValueExW (hKey,
- L"AllUsersProfile",
- NULL,
- NULL,
- (LPBYTE)szBuffer,
- &dwLength);
- if (Error != ERROR_SUCCESS)
- {
- DPRINT1("Error: %lu\n", Error);
- RegCloseKey (hKey);
- SetLastError((DWORD)Error);
- return FALSE;
- }
-
- RegCloseKey (hKey);
-
- wcscat (szProfilePath, L"\\");
- wcscat (szProfilePath, szBuffer);
-
- dwLength = wcslen (szProfilePath) + 1;
- if (lpProfileDir != NULL)
- {
- if (*lpcchSize < dwLength)
- {
- *lpcchSize = dwLength;
- SetLastError (ERROR_INSUFFICIENT_BUFFER);
- return FALSE;
- }
-
- wcscpy (lpProfileDir, szProfilePath);
- }
-
- *lpcchSize = dwLength;
-
- return TRUE;
-}
-
-
-BOOL WINAPI
-GetDefaultUserProfileDirectoryA (LPSTR lpProfileDir,
- LPDWORD lpcchSize)
-{
- LPWSTR lpBuffer;
- BOOL bResult;
-
- lpBuffer = GlobalAlloc (GMEM_FIXED,
- *lpcchSize * sizeof(WCHAR));
- if (lpBuffer == NULL)
- return FALSE;
-
- bResult = GetDefaultUserProfileDirectoryW (lpBuffer,
- lpcchSize);
- if (bResult)
- {
- WideCharToMultiByte (CP_ACP,
- 0,
- lpBuffer,
- -1,
- lpProfileDir,
- *lpcchSize,
- NULL,
- NULL);
- }
-
- GlobalFree (lpBuffer);
-
- return bResult;
-}
-
-
-BOOL WINAPI
-GetDefaultUserProfileDirectoryW (LPWSTR lpProfileDir,
- LPDWORD lpcchSize)
-{
- WCHAR szProfilePath[MAX_PATH];
- WCHAR szBuffer[MAX_PATH];
- DWORD dwLength;
- HKEY hKey;
- LONG Error;
-
- Error = RegOpenKeyExW (HKEY_LOCAL_MACHINE,
- L"SOFTWARE\\Microsoft\\Windows
NT\\CurrentVersion\\ProfileList",
- 0,
- KEY_QUERY_VALUE,
- &hKey);
- if (Error != ERROR_SUCCESS)
- {
- DPRINT1("Error: %lu\n", Error);
- SetLastError((DWORD)Error);
- return FALSE;
- }
-
- /* Get profiles path */
- dwLength = sizeof(szBuffer);
- Error = RegQueryValueExW (hKey,
- L"ProfilesDirectory",
- NULL,
- NULL,
- (LPBYTE)szBuffer,
- &dwLength);
- if (Error != ERROR_SUCCESS)
- {
- DPRINT1("Error: %lu\n", Error);
- RegCloseKey (hKey);
- SetLastError((DWORD)Error);
- return FALSE;
- }
-
- /* Expand it */
- if (!ExpandEnvironmentStringsW (szBuffer,
- szProfilePath,
- MAX_PATH))
- {
- DPRINT1("Error: %lu\n", GetLastError());
- RegCloseKey (hKey);
- return FALSE;
- }
-
- /* Get 'DefaultUserProfile' name */
- dwLength = sizeof(szBuffer);
- Error = RegQueryValueExW (hKey,
- L"DefaultUserProfile",
- NULL,
- NULL,
- (LPBYTE)szBuffer,
- &dwLength);
- if (Error != ERROR_SUCCESS)
- {
- DPRINT1("Error: %lu\n", Error);
- RegCloseKey (hKey);
- SetLastError((DWORD)Error);
- return FALSE;
- }
-
- RegCloseKey (hKey);
-
- wcscat (szProfilePath, L"\\");
- wcscat (szProfilePath, szBuffer);
-
- dwLength = wcslen (szProfilePath) + 1;
- if (lpProfileDir != NULL)
- {
- if (*lpcchSize < dwLength)
- {
- *lpcchSize = dwLength;
- SetLastError (ERROR_INSUFFICIENT_BUFFER);
- return FALSE;
- }
-
- wcscpy (lpProfileDir, szProfilePath);
- }
-
- *lpcchSize = dwLength;
-
- return TRUE;
-}
-
-
-BOOL WINAPI
-GetProfilesDirectoryA (LPSTR lpProfileDir,
- LPDWORD lpcchSize)
-{
- LPWSTR lpBuffer;
- BOOL bResult;
-
- lpBuffer = GlobalAlloc (GMEM_FIXED,
- *lpcchSize * sizeof(WCHAR));
- if (lpBuffer == NULL)
- return FALSE;
-
- bResult = GetProfilesDirectoryW (lpBuffer,
- lpcchSize);
- if (bResult)
- {
- WideCharToMultiByte (CP_ACP,
- 0,
- lpBuffer,
- -1,
- lpProfileDir,
- *lpcchSize,
- NULL,
- NULL);
- }
-
- GlobalFree (lpBuffer);
-
- return bResult;
-}
-
-
-BOOL WINAPI
-GetProfilesDirectoryW (LPWSTR lpProfilesDir,
- LPDWORD lpcchSize)
-{
- WCHAR szProfilesPath[MAX_PATH];
- WCHAR szBuffer[MAX_PATH];
- DWORD dwLength;
- HKEY hKey;
- LONG Error;
-
- Error = RegOpenKeyExW (HKEY_LOCAL_MACHINE,
- L"SOFTWARE\\Microsoft\\Windows
NT\\CurrentVersion\\ProfileList",
- 0,
- KEY_QUERY_VALUE,
- &hKey);
- if (Error != ERROR_SUCCESS)
- {
- DPRINT1("Error: %lu\n", Error);
- SetLastError((DWORD)Error);
- return FALSE;
- }
-
- /* Get profiles path */
- dwLength = sizeof(szBuffer);
- Error = RegQueryValueExW (hKey,
- L"ProfilesDirectory",
- NULL,
- NULL,
- (LPBYTE)szBuffer,
- &dwLength);
- if (Error != ERROR_SUCCESS)
- {
- DPRINT1("Error: %lu\n", Error);
- RegCloseKey (hKey);
- SetLastError((DWORD)Error);
- return FALSE;
- }
-
- RegCloseKey (hKey);
-
- /* Expand it */
- if (!ExpandEnvironmentStringsW (szBuffer,
- szProfilesPath,
- MAX_PATH))
- {
- DPRINT1("Error: %lu\n", GetLastError());
- return FALSE;
- }
-
- dwLength = wcslen (szProfilesPath) + 1;
- if (lpProfilesDir != NULL)
- {
- if (*lpcchSize < dwLength)
- {
- *lpcchSize = dwLength;
- SetLastError (ERROR_INSUFFICIENT_BUFFER);
- return FALSE;
- }
-
- wcscpy (lpProfilesDir, szProfilesPath);
- }
-
- *lpcchSize = dwLength;
-
- return TRUE;
-}
-
-
-BOOL WINAPI
-GetUserProfileDirectoryA (HANDLE hToken,
- LPSTR lpProfileDir,
- LPDWORD lpcchSize)
-{
- LPWSTR lpBuffer;
- BOOL bResult;
-
- lpBuffer = GlobalAlloc (GMEM_FIXED,
- *lpcchSize * sizeof(WCHAR));
- if (lpBuffer == NULL)
- return FALSE;
-
- bResult = GetUserProfileDirectoryW (hToken,
- lpBuffer,
- lpcchSize);
- if (bResult)
- {
- WideCharToMultiByte (CP_ACP,
- 0,
- lpBuffer,
- -1,
- lpProfileDir,
- *lpcchSize,
- NULL,
- NULL);
- }
-
- GlobalFree (lpBuffer);
-
- return bResult;
-}
-
-
-BOOL WINAPI
-GetUserProfileDirectoryW (HANDLE hToken,
- LPWSTR lpProfileDir,
- LPDWORD lpcchSize)
-{
- UNICODE_STRING SidString;
- WCHAR szKeyName[MAX_PATH];
- WCHAR szRawImagePath[MAX_PATH];
- WCHAR szImagePath[MAX_PATH];
- DWORD dwLength;
- HKEY hKey;
- LONG Error;
-
- if (!GetUserSidFromToken (hToken,
- &SidString))
- {
- DPRINT1 ("GetUserSidFromToken() failed\n");
- return FALSE;
- }
-
- DPRINT ("SidString: '%wZ'\n", &SidString);
-
- wcscpy (szKeyName,
- L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList\\");
- wcscat (szKeyName,
- SidString.Buffer);
-
- RtlFreeUnicodeString (&SidString);
-
- DPRINT ("KeyName: '%S'\n", szKeyName);
-
- Error = RegOpenKeyExW (HKEY_LOCAL_MACHINE,
- szKeyName,
- 0,
- KEY_QUERY_VALUE,
- &hKey);
- if (Error != ERROR_SUCCESS)
- {
- DPRINT1 ("Error: %lu\n", Error);
- SetLastError((DWORD)Error);
- return FALSE;
- }
-
- dwLength = sizeof(szRawImagePath);
- Error = RegQueryValueExW (hKey,
- L"ProfileImagePath",
- NULL,
- NULL,
- (LPBYTE)szRawImagePath,
- &dwLength);
- if (Error != ERROR_SUCCESS)
- {
- DPRINT1 ("Error: %lu\n", Error);
- RegCloseKey (hKey);
- SetLastError((DWORD)Error);
- return FALSE;
- }
-
- RegCloseKey (hKey);
-
- DPRINT ("RawImagePath: '%S'\n", szRawImagePath);
-
- /* Expand it */
- if (!ExpandEnvironmentStringsW (szRawImagePath,
- szImagePath,
- MAX_PATH))
- {
- DPRINT1 ("Error: %lu\n", GetLastError());
- return FALSE;
- }
-
- DPRINT ("ImagePath: '%S'\n", szImagePath);
-
- dwLength = wcslen (szImagePath) + 1;
- if (*lpcchSize < dwLength)
- {
- *lpcchSize = dwLength;
- SetLastError (ERROR_INSUFFICIENT_BUFFER);
- return FALSE;
- }
-
- *lpcchSize = dwLength;
- wcscpy (lpProfileDir,
- szImagePath);
-
- return TRUE;
-}
-
-
-static BOOL
-CheckForLoadedProfile (HANDLE hToken)
-{
- UNICODE_STRING SidString;
- HKEY hKey;
-
- DPRINT ("CheckForLoadedProfile() called \n");
-
- if (!GetUserSidFromToken (hToken,
- &SidString))
- {
- DPRINT1 ("GetUserSidFromToken() failed\n");
- return FALSE;
- }
-
- if (RegOpenKeyExW (HKEY_USERS,
- SidString.Buffer,
- 0,
- MAXIMUM_ALLOWED,
- &hKey))
- {
- DPRINT ("Profile not loaded\n");
- RtlFreeUnicodeString (&SidString);
- return FALSE;
- }
-
- RegCloseKey (hKey);
-
- RtlFreeUnicodeString (&SidString);
-
- DPRINT ("Profile already loaded\n");
-
- return TRUE;
-}
-
-
-BOOL WINAPI
-LoadUserProfileA (HANDLE hToken,
- LPPROFILEINFOA lpProfileInfo)
-{
- DPRINT ("LoadUserProfileA() not implemented\n");
- return FALSE;
-}
-
-
-BOOL WINAPI
-LoadUserProfileW(
- IN HANDLE hToken,
- IN OUT LPPROFILEINFOW lpProfileInfo)
+}
+
+
+BOOL
+WINAPI
+LoadUserProfileW(IN HANDLE hToken,
+ IN OUT LPPROFILEINFOW lpProfileInfo)
{
WCHAR szUserHivePath[MAX_PATH];
LPWSTR UserName = NULL, Domain = NULL;
@@ -920,10 +929,8 @@
DPRINT("LoadUserProfileW() called\n");
/* Check profile info */
- if (!lpProfileInfo
- || lpProfileInfo->dwSize != sizeof(PROFILEINFOW)
- || lpProfileInfo->lpUserName == NULL
- || lpProfileInfo->lpUserName[0] == 0)
+ if (!lpProfileInfo || (lpProfileInfo->dwSize != sizeof(PROFILEINFOW)) ||
+ (lpProfileInfo->lpUserName == NULL) || (lpProfileInfo->lpUserName[0] == 0))
{
SetLastError(ERROR_INVALID_PARAMETER);
return TRUE;
@@ -968,22 +975,24 @@
if (GetFileAttributesW(szUserHivePath) == INVALID_FILE_ATTRIBUTES)
{
/* Get user sid */
- if (GetTokenInformation(hToken, TokenUser, NULL, 0, &dwLength)
- || GetLastError() != ERROR_INSUFFICIENT_BUFFER)
+ if (GetTokenInformation(hToken, TokenUser, NULL, 0, &dwLength) ||
+ GetLastError() != ERROR_INSUFFICIENT_BUFFER)
{
DPRINT1 ("GetTokenInformation() failed\n");
return FALSE;
}
+
UserSid = (PTOKEN_USER)HeapAlloc(GetProcessHeap(), 0, dwLength);
if (!UserSid)
{
- DPRINT1 ("HeapAlloc() failed\n");
+ DPRINT1("HeapAlloc() failed\n");
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
goto cleanup;
}
+
if (!GetTokenInformation(hToken, TokenUser, UserSid, dwLength, &dwLength))
{
- DPRINT1 ("GetTokenInformation() failed\n");
+ DPRINT1("GetTokenInformation() failed\n");
goto cleanup;
}
@@ -1012,11 +1021,13 @@
goto cleanup;
}
}
- ret = LookupAccountSidW(
- NULL, UserSid->User.Sid,
- UserName, &UserNameLength,
- Domain, &DomainLength,
- &AccountType);
+ ret = LookupAccountSidW(NULL,
+ UserSid->User.Sid,
+ UserName,
+ &UserNameLength,
+ Domain,
+ &DomainLength,
+ &AccountType);
} while (!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER);
if (!ret)
@@ -1090,51 +1101,53 @@
}
-BOOL WINAPI
-UnloadUserProfile (HANDLE hToken,
- HANDLE hProfile)
-{
- UNICODE_STRING SidString;
- LONG Error;
-
- DPRINT ("UnloadUserProfile() called\n");
-
- if (hProfile == NULL)
- {
- DPRINT1 ("Invalide profile handle\n");
- SetLastError (ERROR_INVALID_PARAMETER);
- return FALSE;
- }
-
- RegCloseKey (hProfile);
-
- if (!GetUserSidFromToken (hToken,
- &SidString))
- {
- DPRINT1 ("GetUserSidFromToken() failed\n");
- return FALSE;
- }
-
- DPRINT ("SidString: '%wZ'\n", &SidString);
-
- Error = RegUnLoadKeyW (HKEY_USERS,
- SidString.Buffer);
- if (Error != ERROR_SUCCESS)
- {
- DPRINT1 ("RegUnLoadKeyW() failed (Error %ld)\n", Error);
- RtlFreeUnicodeString (&SidString);
- SetLastError((DWORD)Error);
- return FALSE;
- }
-
- RtlFreeUnicodeString (&SidString);
-
- DPRINT ("UnloadUserProfile() done\n");
-
- return TRUE;
-}
-
-BOOL WINAPI
+BOOL
+WINAPI
+UnloadUserProfile(HANDLE hToken,
+ HANDLE hProfile)
+{
+ UNICODE_STRING SidString;
+ LONG Error;
+
+ DPRINT("UnloadUserProfile() called\n");
+
+ if (hProfile == NULL)
+ {
+ DPRINT1("Invalide profile handle\n");
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+ }
+
+ RegCloseKey(hProfile);
+
+ if (!GetUserSidFromToken(hToken,
+ &SidString))
+ {
+ DPRINT1("GetUserSidFromToken() failed\n");
+ return FALSE;
+ }
+
+ DPRINT("SidString: '%wZ'\n", &SidString);
+
+ Error = RegUnLoadKeyW(HKEY_USERS,
+ SidString.Buffer);
+ if (Error != ERROR_SUCCESS)
+ {
+ DPRINT1("RegUnLoadKeyW() failed (Error %ld)\n", Error);
+ RtlFreeUnicodeString(&SidString);
+ SetLastError((DWORD)Error);
+ return FALSE;
+ }
+
+ RtlFreeUnicodeString(&SidString);
+
+ DPRINT("UnloadUserProfile() done\n");
+
+ return TRUE;
+}
+
+BOOL
+WINAPI
DeleteProfileW(LPCWSTR lpSidString,
LPCWSTR lpProfilePath,
LPCWSTR lpComputerName)
@@ -1143,7 +1156,8 @@
return FALSE;
}
-BOOL WINAPI
+BOOL
+WINAPI
DeleteProfileA(LPCSTR lpSidString,
LPCSTR lpProfilePath,
LPCSTR lpComputerName)