[ros-diffs] [hpoussin] 28244: Replace a call to undocumented function CreateUserProfile by its documented equivalent (LogonUser + LoadUserProfile) In all cases, this code should be removed once NtUnloadKey is implemented Add a message to remind when to remove this hack
hpoussin at svn.reactos.org
hpoussin at svn.reactos.org
Wed Aug 8 15:44:03 CEST 2007
Author: hpoussin
Date: Wed Aug 8 17:44:03 2007
New Revision: 28244
URL: http://svn.reactos.org/svn/reactos?rev=28244&view=rev
Log:
Replace a call to undocumented function CreateUserProfile by its documented equivalent (LogonUser + LoadUserProfile)
In all cases, this code should be removed once NtUnloadKey is implemented
Add a message to remind when to remove this hack
Modified:
trunk/reactos/dll/win32/syssetup/install.c
Modified: trunk/reactos/dll/win32/syssetup/install.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/syssetup/install.c?rev=28244&r1=28243&r2=28244&view=diff
==============================================================================
--- trunk/reactos/dll/win32/syssetup/install.c (original)
+++ trunk/reactos/dll/win32/syssetup/install.c Wed Aug 8 17:44:03 2007
@@ -722,17 +722,38 @@
}
}
- /* Create the Administrator profile */
- if (!CreateUserProfileW(AdminSid, L"Administrator"))
- {
- DebugPrint("CreateUserProfileW() failed!");
- RtlFreeSid(AdminSid);
- RtlFreeSid(DomainSid);
- return 0;
- }
-
RtlFreeSid(AdminSid);
RtlFreeSid(DomainSid);
+
+ /* ROS HACK, as long as NtUnloadKey is not implemented */
+ {
+ NTSTATUS Status = NtUnloadKey(NULL);
+ if (Status == STATUS_NOT_IMPLEMENTED)
+ {
+ /* Create the Administrator profile */
+ PROFILEINFOW ProfileInfo;
+ HANDLE hToken;
+ BOOL ret;
+#define LOGON32_LOGON_NETWORK 3
+ ret = LogonUserW(L"Administrator", L"", L"", LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, &hToken);
+ if (!ret)
+ {
+ DebugPrint("LogonUserW() failed!");
+ return 0;
+ }
+ ZeroMemory(&ProfileInfo, sizeof(PROFILEINFOW));
+ ProfileInfo.dwSize = sizeof(PROFILEINFOW);
+ ProfileInfo.lpUserName = L"Administrator";
+ ProfileInfo.dwFlags = PI_NOUI;
+ LoadUserProfileW(hToken, &ProfileInfo);
+ CloseHandle(hToken);
+ }
+ else
+ {
+ DPRINT1("ROS HACK not needed anymore. Please remove it\n");
+ }
+ }
+ /* END OF ROS HACK */
CreateTempDir(L"TEMP");
CreateTempDir(L"TMP");
More information about the Ros-diffs
mailing list