From 3b67603f555d5653b466557ec27649194c5f53f9 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 7 Nov 2015 16:40:33 +0000 Subject: [PATCH] [USERENV] CreateEnvironmentBlock: Set or overwrite the SystemRoot, SystemDrive and USERPROFILE environment variables of the new environment block. svn path=/trunk/; revision=69834 --- reactos/dll/win32/userenv/environment.c | 34 +++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/reactos/dll/win32/userenv/environment.c b/reactos/dll/win32/userenv/environment.c index cb1b26e7d3f..55f363fd7f5 100644 --- a/reactos/dll/win32/userenv/environment.c +++ b/reactos/dll/win32/userenv/environment.c @@ -431,6 +431,29 @@ CreateEnvironmentBlock(LPVOID *lpEnvironment, return FALSE; } + /* Set 'SystemRoot' variable */ + Length = MAX_PATH; + if (GetEnvironmentVariableW(L"SystemRoot", + Buffer, + Length)) + { + SetUserEnvironmentVariable(lpEnvironment, + L"SystemRoot", + Buffer, + FALSE); + } + + /* Set 'SystemDrive' variable */ + if (GetEnvironmentVariableW(L"SystemDrive", + Buffer, + Length)) + { + SetUserEnvironmentVariable(lpEnvironment, + L"SystemDrive", + Buffer, + FALSE); + } + /* Set 'COMPUTERNAME' variable */ Length = MAX_PATH; if (GetComputerNameW(Buffer, @@ -453,6 +476,17 @@ CreateEnvironmentBlock(LPVOID *lpEnvironment, FALSE); } + /* Set 'USERSPROFILE' variable to the default users profile */ + Length = MAX_PATH; + if (GetDefaultUserProfileDirectory(Buffer, + &Length)) + { + SetUserEnvironmentVariable(lpEnvironment, + L"USERPROFILE", + Buffer, + TRUE); + } + lError = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion", 0, -- 2.17.1