Home | Info | Community | Development | myReactOS | Contact Us
[static]
Definition at line 26 of file environment.c.
Referenced by CreateUserEnvironment().
{ WCHAR szPath[MAX_PATH + 1]; LPCWSTR wstr; SIZE_T size; WCHAR szEnvKey[MAX_PATH]; WCHAR szEnvValue[1024]; SIZE_T length; LPWSTR eqptr, endptr; DWORD dwDisp; LONG lError; HKEY hKeyVolatileEnv; HKEY hKeyShellFolders; DWORD dwType; DWORD dwSize; /* Create the 'Volatile Environment' key */ lError = RegCreateKeyExW(hKeyCurrentUser, L"Volatile Environment", 0, NULL, REG_OPTION_VOLATILE, KEY_WRITE, NULL, &hKeyVolatileEnv, &dwDisp); if (lError != ERROR_SUCCESS) { WARN("WL: RegCreateKeyExW() failed to create the volatile environment key (Error: %ld)\n", lError); return; } /* Parse the environment variables and add them to the volatile environment key */ if (Session->Profile->dwType == WLX_PROFILE_TYPE_V2_0 && Session->Profile->pszEnvironment != NULL) { wstr = Session->Profile->pszEnvironment; while (*wstr != UNICODE_NULL) { size = wcslen(wstr) + 1; eqptr = wcschr(wstr, L'='); if (eqptr != NULL) { endptr = eqptr; endptr--; while (iswspace(*endptr)) endptr--; length = (SIZE_T)(endptr - wstr + 1); wcsncpy(szEnvKey, wstr, length); szEnvKey[length] = 0; eqptr++; while (iswspace(*eqptr)) eqptr++; wcscpy(szEnvValue, eqptr); RegSetValueExW(hKeyVolatileEnv, szEnvKey, 0, REG_SZ, (LPBYTE)szEnvValue, (wcslen(szEnvValue) + 1) * sizeof(WCHAR)); } wstr += size; } } /* Set the 'APPDATA' environment variable */ lError = RegOpenKeyExW(hKeyCurrentUser, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", 0, KEY_READ, &hKeyShellFolders); if (lError == ERROR_SUCCESS) { dwSize = (MAX_PATH + 1) * sizeof(WCHAR); lError = RegQueryValueExW(hKeyShellFolders, L"AppData", NULL, &dwType, (LPBYTE)szPath, &dwSize); if (lError == ERROR_SUCCESS) { TRACE("APPDATA path: %S\n", szPath); RegSetValueExW(hKeyVolatileEnv, L"APPDATA", 0, REG_SZ, (LPBYTE)szPath, (wcslen(szPath) + 1) * sizeof(WCHAR)); } RegCloseKey(hKeyShellFolders); } RegCloseKey(hKeyVolatileEnv); }