[WINLOGON]

- Add a hack to fix the APPDATA environment variable. This hack will be removed after bug #5372 has been fixed. Fixes bug #4102.

svn path=/trunk/; revision=47220
This commit is contained in:
Eric Kohl 2010-05-15 16:02:14 +00:00
parent 31dfebe9a7
commit e5b5b48170

View file

@ -31,15 +31,15 @@ BuildVolatileEnvironment(IN PWLSESSION Session,
HINSTANCE hShell32 = NULL; HINSTANCE hShell32 = NULL;
PFSHGETFOLDERPATHW pfSHGetFolderPathW = NULL; PFSHGETFOLDERPATHW pfSHGetFolderPathW = NULL;
WCHAR szPath[MAX_PATH + 1]; WCHAR szPath[MAX_PATH + 1];
WCHAR szExpandedPath[MAX_PATH + 1];
LPCWSTR wstr; LPCWSTR wstr;
SIZE_T size; SIZE_T size;
WCHAR szEnvKey[MAX_PATH]; WCHAR szEnvKey[MAX_PATH];
WCHAR szEnvValue[1024]; WCHAR szEnvValue[1024];
SIZE_T length; SIZE_T length;
LPWSTR eqptr, endptr; LPWSTR eqptr, endptr;
/* Parse the environment variables and add them to the volatile environment key */
if (Session->Profile->dwType == WLX_PROFILE_TYPE_V2_0 && if (Session->Profile->dwType == WLX_PROFILE_TYPE_V2_0 &&
Session->Profile->pszEnvironment != NULL) Session->Profile->pszEnvironment != NULL)
{ {
@ -80,7 +80,7 @@ BuildVolatileEnvironment(IN PWLSESSION Session,
} }
} }
/* Load shell32.dll and call SHGetFolderPathW to get the users appdata folder path */
hShell32 = LoadLibraryW(L"shell32.dll"); hShell32 = LoadLibraryW(L"shell32.dll");
if (hShell32 != NULL) if (hShell32 != NULL)
{ {
@ -94,12 +94,21 @@ BuildVolatileEnvironment(IN PWLSESSION Session,
0, 0,
szPath) == S_OK) szPath) == S_OK)
{ {
/* FIXME: Expand %USERPROFILE% here. SHGetFolderPathW should do it for us. See Bug #5372.*/
TRACE("APPDATA path: %S\n", szPath);
ExpandEnvironmentStringsForUserW(Session->UserToken,
szPath,
szExpandedPath,
MAX_PATH);
/* Add the appdata folder path to the users volatile environment key */
TRACE("APPDATA expanded path: %S\n", szExpandedPath);
RegSetValueExW(hKey, RegSetValueExW(hKey,
L"APPDATA", L"APPDATA",
0, 0,
REG_SZ, REG_SZ,
(LPBYTE)szPath, (LPBYTE)szExpandedPath,
(wcslen(szPath) + 1) * sizeof(WCHAR)); (wcslen(szExpandedPath) + 1) * sizeof(WCHAR));
} }
} }