Author: cfinck Date: Sat Apr 18 19:08:52 2009 New Revision: 40581
URL: http://svn.reactos.org/svn/reactos?rev=40581&view=rev Log: Hack: Add the APPDATA variable to the environment when logging in. Used to be in trunk, but was reverted there, because it's also accessible via CreateEnvironmentBlock under Windows. Need more time for researching the right thing to do here.
Modified: branches/ros-branch-0_3_9/reactos/base/system/winlogon/sas.c branches/ros-branch-0_3_9/reactos/base/system/winlogon/winlogon.h branches/ros-branch-0_3_9/reactos/base/system/winlogon/winlogon.rbuild
Modified: branches/ros-branch-0_3_9/reactos/base/system/winlogon/sas.c URL: http://svn.reactos.org/svn/reactos/branches/ros-branch-0_3_9/reactos/base/sy... ============================================================================== --- branches/ros-branch-0_3_9/reactos/base/system/winlogon/sas.c [iso-8859-1] (original) +++ branches/ros-branch-0_3_9/reactos/base/system/winlogon/sas.c [iso-8859-1] Sat Apr 18 19:08:52 2009 @@ -175,6 +175,9 @@ SIZE_T EnvBlockSize = 0, ProfileSize = 0; BOOLEAN Old; BOOL ret = FALSE; + UNICODE_STRING VariableName; + UNICODE_STRING VariableValue; + WCHAR AppDataPath[MAX_PATH];
/* Loading personal settings */ DisplayStatusMessage(Session, Session->WinlogonDesktop, IDS_LOADINGYOURPERSONALSETTINGS); @@ -218,6 +221,18 @@ WARN("WL: CreateEnvironmentBlock() failed\n"); goto cleanup; } + + /* Use SHGetFolderPathW for getting the AppData path */ + if(SHGetFolderPathW(NULL, CSIDL_APPDATA, Session->UserToken, SHGFP_TYPE_CURRENT, AppDataPath) == E_FAIL) + { + WARN("WL: SHGetFolderPathW() failed\n"); + goto cleanup; + } + + /* Some environment variables need to be set by winlogon (verified against Windows XP winlogon) */ + RtlInitUnicodeString(&VariableName, L"APPDATA"); + RtlInitUnicodeString(&VariableValue, AppDataPath); + RtlSetEnvironmentVariable((PWSTR*)&lpEnvironment, &VariableName, &VariableValue);
if (Session->Profile->dwType == WLX_PROFILE_TYPE_V2_0 && Session->Profile->pszEnvironment) { @@ -263,6 +278,8 @@
DisplayStatusMessage(Session, Session->WinlogonDesktop, IDS_APPLYINGYOURPERSONALSETTINGS); UpdatePerUserSystemParameters(0, TRUE); + + /* FIXME: Set the "Volatile Environment" key for the new user */
/* Set default language */ if (!SetDefaultLanguage(TRUE))
Modified: branches/ros-branch-0_3_9/reactos/base/system/winlogon/winlogon.h URL: http://svn.reactos.org/svn/reactos/branches/ros-branch-0_3_9/reactos/base/sy... ============================================================================== --- branches/ros-branch-0_3_9/reactos/base/system/winlogon/winlogon.h [iso-8859-1] (original) +++ branches/ros-branch-0_3_9/reactos/base/system/winlogon/winlogon.h [iso-8859-1] Sat Apr 18 19:08:52 2009 @@ -39,6 +39,7 @@ #include <ntsecapi.h> #include <accctrl.h> #include <aclapi.h> +#include <shlobj.h>
#include <reactos/winlogon.h>
Modified: branches/ros-branch-0_3_9/reactos/base/system/winlogon/winlogon.rbuild URL: http://svn.reactos.org/svn/reactos/branches/ros-branch-0_3_9/reactos/base/sy... ============================================================================== --- branches/ros-branch-0_3_9/reactos/base/system/winlogon/winlogon.rbuild [iso-8859-1] (original) +++ branches/ros-branch-0_3_9/reactos/base/system/winlogon/winlogon.rbuild [iso-8859-1] Sat Apr 18 19:08:52 2009 @@ -9,6 +9,7 @@ <library>advapi32</library> <library>userenv</library> <library>secur32</library> + <library>shell32</library> <file>sas.c</file> <file>screensaver.c</file> <file>setup.c</file>