Zebediah Figura : userenv: Set the ProgramFiles(x86) and CommonProgramFiles(x86) environment variables.

Alexandre Julliard julliard at winehq.org
Wed Nov 6 16:54:28 CST 2019


Module: wine
Branch: master
Commit: 99dc0e0eeb6ff99d253921055af1ca7d95d0d6dd
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=99dc0e0eeb6ff99d253921055af1ca7d95d0d6dd

Author: Zebediah Figura <z.figura12 at 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 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at 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);




More information about the wine-cvs mailing list