diff --git a/src/dosinst.c b/src/dosinst.c
index 6dcb5e3..979d6fe 100644
--- a/src/dosinst.c
+++ b/src/dosinst.c
@@ -462,8 +462,8 @@
     DWORD	new_num_keys;
     int		foundone = 0;
 
-    code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, uninstall_key, 0, KEY_READ,
-								 &key_handle);
+    code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, uninstall_key, 0,
+				     KEY_WOW64_64KEY | KEY_READ, &key_handle);
     CHECK_REG_ERROR(code);
 
     for (key_index = 0;
@@ -475,8 +475,8 @@
 	if (strncmp("Vim", subkey_name_buff, 3) == 0)
 	{
 	    /* Open the key named Vim* */
-	    code = RegOpenKeyEx(key_handle, subkey_name_buff, 0, KEY_READ,
-		    &uninstall_key_handle);
+	    code = RegOpenKeyEx(key_handle, subkey_name_buff, 0,
+			   KEY_WOW64_64KEY | KEY_READ, &uninstall_key_handle);
 	    CHECK_REG_ERROR(code);
 
 	    /* get the DisplayName out of it to show the user */
@@ -1352,14 +1352,6 @@
 }
 
 #if defined(WIN3264)
-/*
- * Modern way of creating registry entries, also works on 64 bit windows when
- * compiled as a 32 bit program.
- */
-# ifndef KEY_WOW64_64KEY
-#  define KEY_WOW64_64KEY 0x0100
-# endif
-
     static LONG
 reg_create_key(
     HKEY root,
diff --git a/src/dosinst.h b/src/dosinst.h
index 86e65e9..b33426a 100644
--- a/src/dosinst.h
+++ b/src/dosinst.h
@@ -83,6 +83,14 @@
 # define TRUE 1
 #endif
 
+/*
+ * Modern way of creating registry entries, also works on 64 bit windows when
+ * compiled as a 32 bit program.
+ */
+# ifndef KEY_WOW64_64KEY
+#  define KEY_WOW64_64KEY 0x0100
+# endif
+
 #define VIM_STARTMENU "Programs\\Vim " VIM_VERSION_SHORT
 
 int	interactive;		/* non-zero when running interactively */
diff --git a/src/if_ole.cpp b/src/if_ole.cpp
index 1f73705..53c12de 100644
--- a/src/if_ole.cpp
+++ b/src/if_ole.cpp
@@ -50,14 +50,6 @@
 	    WORD wVerMinor, LCID lcid, SYSKIND syskind);
 #endif
 
-/*
- * Modern way of creating registry entries, also works on 64 bit windows when
- * compiled as a 32 bit program.
- */
-# ifndef KEY_WOW64_64KEY
-#  define KEY_WOW64_64KEY 0x0100
-# endif
-
 /*****************************************************************************
  1. Internal definitions for this file
 *****************************************************************************/
@@ -166,7 +158,7 @@
 	// RegCreateKeyEx succeeds even if key exists. W.Briscoe W2K 20021011
 	if (RegCreateKeyEx(HKEY_CLASSES_ROOT, MYVIPROGID, 0, NULL,
 		  REG_OPTION_NON_VOLATILE,
-		  KEY_WOW64_64KEY | KEY_ALL_ACCESS, NULL, &hKey, NULL))
+		  KEY_ALL_ACCESS, NULL, &hKey, NULL))
 	{
 	    delete me;
 	    return NULL; // Unable to write to registry. Quietly fail.
@@ -658,7 +650,8 @@
 {
     // Open the child
     HKEY hKeyChild;
-    LONG result = RegOpenKeyEx(hKeyParent, child, 0, KEY_ALL_ACCESS, &hKeyChild);
+    LONG result = RegOpenKeyEx(hKeyParent, child, 0,
+						  KEY_ALL_ACCESS, &hKeyChild);
     if (result != ERROR_SUCCESS)
 	return;
 
@@ -701,7 +694,7 @@
     long result = RegCreateKeyEx(HKEY_CLASSES_ROOT,
 				 buffer,
 				 0, NULL, REG_OPTION_NON_VOLATILE,
-				 KEY_WOW64_64KEY | KEY_ALL_ACCESS, NULL,
+				 KEY_ALL_ACCESS, NULL,
 				 &hKey, NULL);
     if (result != ERROR_SUCCESS)
 	return;
diff --git a/src/uninstal.c b/src/uninstal.c
index b18a326..4b4b6f2 100644
--- a/src/uninstal.c
+++ b/src/uninstal.c
@@ -46,8 +46,8 @@
     int		r;
 
     /* Open the key where the path to gvim.exe is stored. */
-    if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Vim\\Gvim", 0, KEY_READ,
-						&key_handle) != ERROR_SUCCESS)
+    if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Vim\\Gvim", 0,
+		    KEY_WOW64_64KEY | KEY_READ, &key_handle) != ERROR_SUCCESS)
 	return 0;
 
     /* get the DisplayName out of it to show the user */
@@ -72,8 +72,8 @@
 
     /* Open the key where the path to gvim.exe is stored. */
     if (RegOpenKeyEx(HKEY_CLASSES_ROOT,
-		"Applications\\gvim.exe\\shell\\edit\\command", 0, KEY_READ,
-						&key_handle) != ERROR_SUCCESS)
+		"Applications\\gvim.exe\\shell\\edit\\command", 0,
+		    KEY_WOW64_64KEY | KEY_READ, &key_handle) != ERROR_SUCCESS)
 	return 0;
 
     /* get the DisplayName out of it to show the user */
@@ -95,7 +95,8 @@
 	++fail;
     if (RegDeleteKey(HKEY_CLASSES_ROOT, "*\\shellex\\ContextMenuHandlers\\gvim") != ERROR_SUCCESS)
 	++fail;
-    if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved", 0, KEY_ALL_ACCESS, &kh) != ERROR_SUCCESS)
+    if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved", 0,
+		      KEY_WOW64_64KEY | KEY_ALL_ACCESS, &kh) != ERROR_SUCCESS)
 	++fail;
     else
     {
