Commit c55378fce5d0164c87ccf3a6dba2f56b4ade9341

Sven Strickroth 2013-01-31T17:43:59

Detect msysgit installation of users without admin rights Signed-off-by: Sven Strickroth <email@cs-ware.de>

diff --git a/src/win32/findfile.c b/src/win32/findfile.c
index c93b072..10a1c4d 100644
--- a/src/win32/findfile.c
+++ b/src/win32/findfile.c
@@ -9,8 +9,9 @@
 #include "path.h"
 #include "findfile.h"
 
+#define REG_MSYSGIT_INSTALL_LOCAL L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Git_is1"
 #ifndef _WIN64
-#define REG_MSYSGIT_INSTALL L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Git_is1"
+#define REG_MSYSGIT_INSTALL REG_MSYSGIT_INSTALL_LOCAL
 #else
 #define REG_MSYSGIT_INSTALL L"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Git_is1"
 #endif
@@ -113,9 +114,11 @@ int win32_find_system_file_using_registry(git_buf *path, const char *filename)
 {
 	struct win32_path root;
 
-	if (win32_find_msysgit_in_registry(&root, HKEY_LOCAL_MACHINE, REG_MSYSGIT_INSTALL)) {
-		giterr_set(GITERR_OS, "Cannot locate the system's msysgit directory");
-		return -1;
+	if (win32_find_msysgit_in_registry(&root, HKEY_CURRENT_USER, REG_MSYSGIT_INSTALL_LOCAL)) {
+		if (win32_find_msysgit_in_registry(&root, HKEY_LOCAL_MACHINE, REG_MSYSGIT_INSTALL)) {
+			giterr_set(GITERR_OS, "Cannot locate the system's msysgit directory");
+			return -1;
+		}
 	}
 
 	if (win32_find_file(path, &root, filename) < 0) {