[PATCH 3/5] userenv: Set the ProgramFiles(x86) and CommonProgramFiles(x86) environment variables.
Zebediah Figura
z.figura12 at gmail.com
Tue Nov 5 21:48:57 CST 2019
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
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);
--
2.23.0
More information about the wine-devel
mailing list