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)
|
BOOL bInherit)
|
||||||
{
|
{
|
||||||
WCHAR Buffer[MAX_PATH];
|
WCHAR Buffer[MAX_PATH];
|
||||||
|
WCHAR szValue[1024];
|
||||||
DWORD Length;
|
DWORD Length;
|
||||||
|
DWORD dwType;
|
||||||
|
HKEY hKey;
|
||||||
HKEY hKeyUser;
|
HKEY hKeyUser;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
LONG lError;
|
||||||
|
|
||||||
DPRINT("CreateEnvironmentBlock() called\n");
|
DPRINT("CreateEnvironmentBlock() called\n");
|
||||||
|
|
||||||
|
@ -349,17 +353,6 @@ CreateEnvironmentBlock(LPVOID *lpEnvironment,
|
||||||
FALSE);
|
FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hToken == NULL)
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
hKeyUser = GetCurrentUserKey(hToken);
|
|
||||||
if (hKeyUser == NULL)
|
|
||||||
{
|
|
||||||
DPRINT1("GetCurrentUserKey() failed\n");
|
|
||||||
RtlDestroyEnvironment(*lpEnvironment);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set 'ALLUSERSPROFILE' variable */
|
/* Set 'ALLUSERSPROFILE' variable */
|
||||||
Length = MAX_PATH;
|
Length = MAX_PATH;
|
||||||
if (GetAllUsersProfileDirectoryW(Buffer,
|
if (GetAllUsersProfileDirectoryW(Buffer,
|
||||||
|
@ -371,6 +364,57 @@ CreateEnvironmentBlock(LPVOID *lpEnvironment,
|
||||||
FALSE);
|
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 */
|
/* Set 'USERPROFILE' variable */
|
||||||
Length = MAX_PATH;
|
Length = MAX_PATH;
|
||||||
if (GetUserProfileDirectoryW(hToken,
|
if (GetUserProfileDirectoryW(hToken,
|
||||||
|
|
Loading…
Reference in a new issue