mirror of
https://github.com/reactos/reactos.git
synced 2025-01-13 01:22:03 +00:00
[USERENV]
- Create the environment variables 'ProgramFiles' and 'CommonProgramFiles' from the registry. Fixes bug #4008. See issue #2972 for more details. svn path=/trunk/; revision=47116
This commit is contained in:
parent
a2464ecca7
commit
3f5ef48069
1 changed files with 55 additions and 11 deletions
|
@ -317,9 +317,13 @@ CreateEnvironmentBlock(LPVOID *lpEnvironment,
|
|||
BOOL bInherit)
|
||||
{
|
||||
WCHAR Buffer[MAX_PATH];
|
||||
WCHAR szValue[1024];
|
||||
DWORD Length;
|
||||
DWORD dwType;
|
||||
HKEY hKey;
|
||||
HKEY hKeyUser;
|
||||
NTSTATUS Status;
|
||||
LONG lError;
|
||||
|
||||
DPRINT("CreateEnvironmentBlock() called\n");
|
||||
|
||||
|
@ -349,17 +353,6 @@ CreateEnvironmentBlock(LPVOID *lpEnvironment,
|
|||
FALSE);
|
||||
}
|
||||
|
||||
if (hToken == NULL)
|
||||
return TRUE;
|
||||
|
||||
hKeyUser = GetCurrentUserKey(hToken);
|
||||
if (hKeyUser == NULL)
|
||||
{
|
||||
DPRINT1("GetCurrentUserKey() failed\n");
|
||||
RtlDestroyEnvironment(*lpEnvironment);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Set 'ALLUSERSPROFILE' variable */
|
||||
Length = MAX_PATH;
|
||||
if (GetAllUsersProfileDirectoryW(Buffer,
|
||||
|
@ -371,6 +364,57 @@ CreateEnvironmentBlock(LPVOID *lpEnvironment,
|
|||
FALSE);
|
||||
}
|
||||
|
||||
lError = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
|
||||
L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion",
|
||||
0,
|
||||
KEY_READ,
|
||||
&hKey);
|
||||
if (lError == ERROR_SUCCESS)
|
||||
{
|
||||
Length = 1024 * sizeof(WCHAR);
|
||||
lError = RegQueryValueExW(hKey,
|
||||
L"ProgramFilesDir",
|
||||
NULL,
|
||||
&dwType,
|
||||
(LPBYTE)szValue,
|
||||
&Length);
|
||||
if (lError == ERROR_SUCCESS)
|
||||
{
|
||||
SetUserEnvironmentVariable(lpEnvironment,
|
||||
L"ProgramFiles",
|
||||
szValue,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
Length = 1024 * sizeof(WCHAR);
|
||||
lError = RegQueryValueExW(hKey,
|
||||
L"CommonFilesDir",
|
||||
NULL,
|
||||
&dwType,
|
||||
(LPBYTE)szValue,
|
||||
&Length);
|
||||
if (lError == ERROR_SUCCESS)
|
||||
{
|
||||
SetUserEnvironmentVariable(lpEnvironment,
|
||||
L"CommonProgramFiles",
|
||||
szValue,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
|
||||
if (hToken == NULL)
|
||||
return TRUE;
|
||||
|
||||
hKeyUser = GetCurrentUserKey(hToken);
|
||||
if (hKeyUser == NULL)
|
||||
{
|
||||
DPRINT1("GetCurrentUserKey() failed\n");
|
||||
RtlDestroyEnvironment(*lpEnvironment);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Set 'USERPROFILE' variable */
|
||||
Length = MAX_PATH;
|
||||
if (GetUserProfileDirectoryW(hToken,
|
||||
|
|
Loading…
Reference in a new issue