Module: wine Branch: master Commit: 99dc0e0eeb6ff99d253921055af1ca7d95d0d6dd URL: https://source.winehq.org/git/wine.git/?a=commit;h=99dc0e0eeb6ff99d253921055...
Author: Zebediah Figura z.figura12@gmail.com Date: Tue Nov 5 21:48:57 2019 -0600
userenv: Set the ProgramFiles(x86) and CommonProgramFiles(x86) environment variables.
Signed-off-by: Zebediah Figura z.figura12@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/userenv/tests/userenv.c | 2 ++ dlls/userenv/userenv_main.c | 34 ++++++++++++++++++++++++++-------- 2 files changed, 28 insertions(+), 8 deletions(-)
diff --git a/dlls/userenv/tests/userenv.c b/dlls/userenv/tests/userenv.c index 79b4d59a61..f6cfcc79ec 100644 --- a/dlls/userenv/tests/userenv.c +++ b/dlls/userenv/tests/userenv.c @@ -104,6 +104,8 @@ static void test_create_env(void) { "USERPROFILE" } }; static const struct profile_item common_win64_vars[] = { + { "ProgramFiles(x86)" }, + { "CommonProgramFiles(x86)" }, { "ProgramW6432" }, { "CommonProgramW6432" } }; diff --git a/dlls/userenv/userenv_main.c b/dlls/userenv/userenv_main.c index 9317c82735..9f10cfa1d7 100644 --- a/dlls/userenv/userenv_main.c +++ b/dlls/userenv/userenv_main.c @@ -171,11 +171,20 @@ static void set_wow64_environment(WCHAR **env) RtlSetEnvironmentVariable(env, &nameW, &valueW); } } - if (is_wow64 && get_reg_value(*env, hkey, L"ProgramFilesDir (x86)", buf, sizeof(buf))) + if (get_reg_value(*env, hkey, L"ProgramFilesDir (x86)", buf, sizeof(buf))) { - RtlInitUnicodeString(&nameW, L"ProgramFiles"); - RtlInitUnicodeString(&valueW, buf); - RtlSetEnvironmentVariable(env, &nameW, &valueW); + if (is_win64 || is_wow64) + { + RtlInitUnicodeString(&nameW, L"ProgramFiles(x86)"); + RtlInitUnicodeString(&valueW, buf); + RtlSetEnvironmentVariable(env, &nameW, &valueW); + } + if (is_wow64) + { + RtlInitUnicodeString(&nameW, L"ProgramFiles"); + RtlInitUnicodeString(&valueW, buf); + RtlSetEnvironmentVariable(env, &nameW, &valueW); + } }
/* set the CommonProgramFiles variables */ @@ -195,11 +204,20 @@ static void set_wow64_environment(WCHAR **env) RtlSetEnvironmentVariable(env, &nameW, &valueW); } } - if (is_wow64 && get_reg_value(*env, hkey, L"CommonFilesDir (x86)", buf, sizeof(buf))) + if (get_reg_value(*env, hkey, L"CommonFilesDir (x86)", buf, sizeof(buf))) { - RtlInitUnicodeString(&nameW, L"CommonProgramFiles"); - RtlInitUnicodeString(&valueW, buf); - RtlSetEnvironmentVariable(env, &nameW, &valueW); + if (is_win64 || is_wow64) + { + RtlInitUnicodeString(&nameW, L"CommonProgramFiles(x86)"); + RtlInitUnicodeString(&valueW, buf); + RtlSetEnvironmentVariable(env, &nameW, &valueW); + } + if (is_wow64) + { + RtlInitUnicodeString(&nameW, L"CommonProgramFiles"); + RtlInitUnicodeString(&valueW, buf); + RtlSetEnvironmentVariable(env, &nameW, &valueW); + } }
RegCloseKey(hkey);