[msysGit] [cheetah] [PATCH] Add ability to install for the current user only.

2008-01-27 Thread Kirill

They may be useful if the installation is allowed for users without
Administrator privileges.
---
 Makefile   |   17 +++--
 install.reg.in |   23 ---
 systeminfo.c   |   50 +++---
 uninstall.reg  |   12 +---
 4 files changed, 51 insertions(+), 51 deletions(-)

diff --git a/Makefile b/Makefile
index 6c5d576..4042879 100644
--- a/Makefile
+++ b/Makefile
@@ -23,18 +23,23 @@ factory.o: factory.h ext.h menu.h
 menu.o: menu.h ext.h debug.h systeminfo.h
 systeminfo.o: systeminfo.h
 
-install: all install.reg
-   regsvr32 -s git_shell_ext.dll
-   regedit -s install.reg
+inst%: inst%.reg all
+   regsvr32 -s $(DLL_PATH)
+   regedit -s $<
 
-uninstall:
-   regsvr32 -u -s git_shell_ext.dll
-   regedit -s uninstall.reg
+uninst%: uninst%.reg
+   regsvr32 -u -s $(DLL_PATH)
+   regedit -s $<
 
 install.reg: install.reg.in Makefile
sed < $< > $@ \
-e 's|@@MSYSGIT_PATH@@|$(MSYSGIT_PATH)|' \
-e 's|@@DLL_PATH@@|$(DLL_PATH)|'
 
+%-user.reg: %.reg
+   sed < $< > $@ \
+   -e 's|HKEY_LOCAL_MACHINE\\|HKEY_CURRENT_USER\\|' \
+   -e
's|HKEY_CLASSES_ROOT\\|HKEY_CURRENT_USER\\Software\\Classes\\|'
+
 clean:
-rm -f $(OBJECTS) $(TARGET)
diff --git a/install.reg.in b/install.reg.in
index 79195f4..2eb8f13 100644
--- a/install.reg.in
+++ b/install.reg.in
@@ -10,6 +10,12 @@ Windows Registry Editor Version 5.00
 [HKEY_LOCAL_MACHINE\SOFTWARE\Git-Cheetah]
 "PathToMsys"="@@MSYSGIT_PATH@@"
 
+[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
Extensions\Approved]
+"{ca586c80-7c84-4b88-8537-726724df6929}"="Git-Cheetah"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
Extensions\Approved\{ca586c80-7c84-4b88-8537-726724df6929}]
[EMAIL PROTECTED]"Git-Cheetah"
+
 [HKEY_CLASSES_ROOT\CLSID\{ca586c80-7c84-4b88-8537-726724df6929}]
 
 [HKEY_CLASSES_ROOT\CLSID\{ca586c80-7c84-4b88-8537-726724df6929}]
@@ -21,12 +27,9 @@ Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT\CLSID\{ca586c80-7c84-4b88-8537-726724df6929}\InProcServer
32]
 "ThreadingModel"="Apartment"
 
-[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
Extensions\Approved]
-"{ca586c80-7c84-4b88-8537-726724df6929}"="Git-Cheetah"
-
-[HKEY_CLASSES_ROOT\txtfile\shellex\ContextMenuHandlers\Git-Cheetah]
+[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Git-Cheetah]
 
-[HKEY_CLASSES_ROOT\txtfile\shellex\ContextMenuHandlers\Git-Cheetah]
+[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Git-Cheetah]
 @="{ca586c80-7c84-4b88-8537-726724df6929}"
 
 [HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\Git-Cheetah]
@@ -49,17 +52,7 @@ Windows Registry Editor Version 5.00
 [HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\Git-Cheetah]
 @="{ca586c80-7c84-4b88-8537-726724df6929}"
 
-[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Git-Cheetah]
-
-[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Git-Cheetah]
[EMAIL PROTECTED]"{ca586c80-7c84-4b88-8537-726724df6929}"
-
 
[HKEY_CLASSES_ROOT\InternetShortcut\shellex\ContextMenuHandlers\Git-Cheetah]
 
 
[HKEY_CLASSES_ROOT\InternetShortcut\shellex\ContextMenuHandlers\Git-Cheetah]
 @="{ca586c80-7c84-4b88-8537-726724df6929}"
-
-[HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\Git-Cheetah]
-
-[HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\Git-Cheetah]
[EMAIL PROTECTED]"{ca586c80-7c84-4b88-8537-726724df6929}"
diff --git a/systeminfo.c b/systeminfo.c
index 08429bf..2b046df 100644
--- a/systeminfo.c
+++ b/systeminfo.c
@@ -3,37 +3,41 @@
 
 static TCHAR msysPath[MAX_PATH];
 
+static int get_msys_path_from_registry (HKEY root) {
+   HKEY key;
+   DWORD path_len = sizeof (msysPath);
+
+   LONG result = RegOpenKeyEx(root, GIT_CHEETAH_REG_PATH, 
+   0, KEY_QUERY_VALUE, &key);
+   if (ERROR_SUCCESS != result)
+   return 0;
+
+   result = RegQueryValueEx(key,
+   GIT_CHEETAH_REG_PATHTOMSYS,
+   NULL, NULL, (LPBYTE)msysPath, &path_len);
+
+   RegCloseKey(key);
+
+   return ERROR_SUCCESS == result;
+}
+
 TCHAR * msys_path(void)
 {
static int found_path = 0;
-   HKEY hKey;
-   LONG lRet;
 
/* Only bother to get it once. */
if (found_path)
return msysPath;

-   lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
-   TEXT(GIT_CHEETAH_REG_PATH),
-   0, KEY_QUERY_VALUE, &hKey);
-   
-   if (lRet == ERROR_SUCCESS)
-   {
-   DWORD msysPathLen = MAX_PATH * sizeof(TCHAR);
-   
-   lRet = RegQueryValueEx(hKey,
-  TEXT(GIT_CHEETAH_REG_PATHTOMSYS),
-  NULL, NULL,
-  (LPBYTE)msysPath,
-  &msysPathLen);
-   RegCloseKey(hKey);
-
-   if (lRet == 

[msysGit] [cheetah] [PATCH] Add ability to install for the current user only

2008-01-27 Thread Kirill

They may be useful if the installation is allowed for users without
Administrator privileges.
---
 Makefile   |   21 +
 install.reg.in |   23 ---
 systeminfo.c   |   33 +++--
 uninstall-user.reg |   27 +++
 4 files changed, 75 insertions(+), 29 deletions(-)
 create mode 100644 uninstall-user.reg

diff --git a/Makefile b/Makefile
index 6c5d576..e24989a 100644
--- a/Makefile
+++ b/Makefile
@@ -23,18 +23,31 @@ factory.o: factory.h ext.h menu.h
 menu.o: menu.h ext.h debug.h systeminfo.h
 systeminfo.o: systeminfo.h

-install: all install.reg
-   regsvr32 -s git_shell_ext.dll
-   regedit -s install.reg
+install: install.reg all
+   regsvr32 -s $(DLL_PATH)
+   regedit -s $<
+
+install-user: install-user.reg all
+   regsvr32 -s $(DLL_PATH)
+   regedit -s $<

 uninstall:
-   regsvr32 -u -s git_shell_ext.dll
+   regsvr32 -u -s $(DLL_PATH)
regedit -s uninstall.reg

+uninstall-user:
+   regsvr32 -u -s $(DLL_PATH)
+   regedit -s uninstall-user.reg
+
 install.reg: install.reg.in Makefile
sed < $< > $@ \
-e 's|@@MSYSGIT_PATH@@|$(MSYSGIT_PATH)|' \
-e 's|@@DLL_PATH@@|$(DLL_PATH)|'

+install-user.reg: install.reg
+   sed < $< > $@ \
+   -e 's|\[HKEY_LOCAL_MACHINE\\|\[HKEY_CURRENT_USER\\|' \
+   -e 
's|\[HKEY_CLASSES_ROOT\\|\[HKEY_CURRENT_USER\\Software\\Classes\\|'
+
 clean:
-rm -f $(OBJECTS) $(TARGET)
diff --git a/install.reg.in b/install.reg.in
index 79195f4..2eb8f13 100644
--- a/install.reg.in
+++ b/install.reg.in
@@ -10,6 +10,12 @@ Windows Registry Editor Version 5.00
 [HKEY_LOCAL_MACHINE\SOFTWARE\Git-Cheetah]
 "PathToMsys"="@@MSYSGIT_PATH@@"

+[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
Extensions\Approved]
+"{ca586c80-7c84-4b88-8537-726724df6929}"="Git-Cheetah"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
Extensions\Approved\{ca586c80-7c84-4b88-8537-726724df6929}]
[EMAIL PROTECTED]"Git-Cheetah"
+
 [HKEY_CLASSES_ROOT\CLSID\{ca586c80-7c84-4b88-8537-726724df6929}]

 [HKEY_CLASSES_ROOT\CLSID\{ca586c80-7c84-4b88-8537-726724df6929}]
@@ -21,12 +27,9 @@ Windows Registry Editor Version 5.00
 [HKEY_CLASSES_ROOT\CLSID\{ca586c80-7c84-4b88-8537-726724df6929}\InProcServer32]
 "ThreadingModel"="Apartment"

-[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
Extensions\Approved]
-"{ca586c80-7c84-4b88-8537-726724df6929}"="Git-Cheetah"
-
-[HKEY_CLASSES_ROOT\txtfile\shellex\ContextMenuHandlers\Git-Cheetah]
+[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Git-Cheetah]

-[HKEY_CLASSES_ROOT\txtfile\shellex\ContextMenuHandlers\Git-Cheetah]
+[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Git-Cheetah]
 @="{ca586c80-7c84-4b88-8537-726724df6929}"

 [HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\Git-Cheetah]
@@ -49,17 +52,7 @@ Windows Registry Editor Version 5.00
 [HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\Git-Cheetah]
 @="{ca586c80-7c84-4b88-8537-726724df6929}"

-[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Git-Cheetah]
-
-[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Git-Cheetah]
[EMAIL PROTECTED]"{ca586c80-7c84-4b88-8537-726724df6929}"
-
 [HKEY_CLASSES_ROOT\InternetShortcut\shellex\ContextMenuHandlers\Git-Cheetah]

 [HKEY_CLASSES_ROOT\InternetShortcut\shellex\ContextMenuHandlers\Git-Cheetah]
 @="{ca586c80-7c84-4b88-8537-726724df6929}"
-
-[HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\Git-Cheetah]
-
-[HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\Git-Cheetah]
[EMAIL PROTECTED]"{ca586c80-7c84-4b88-8537-726724df6929}"
diff --git a/systeminfo.c b/systeminfo.c
index 08429bf..07444d6 100644
--- a/systeminfo.c
+++ b/systeminfo.c
@@ -8,32 +8,45 @@ TCHAR * msys_path(void)
static int found_path = 0;
HKEY hKey;
LONG lRet;
+   DWORD msysPathLen = MAX_PATH * sizeof(TCHAR);

/* Only bother to get it once. */
if (found_path)
return msysPath;

-   lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+   /* try to find user-specific settings first */
+   lRet = RegOpenKeyEx(HKEY_CURRENT_USER,
TEXT(GIT_CHEETAH_REG_PATH),
0, KEY_QUERY_VALUE, &hKey);
-   
-   if (lRet == ERROR_SUCCESS)
-   {
-   DWORD msysPathLen = MAX_PATH * sizeof(TCHAR);
-   
+   if (ERROR_SUCCESS == lRet) {
lRet = RegQueryValueEx(hKey,
   TEXT(GIT_CHEETAH_REG_PATHTOMSYS),
   NULL, NULL,
   (LPBYTE)msysPath,
   &msysPathLen);
RegCloseKey(hKey);
+   }

-   if (lRet == ERROR_SUCCESS)
-   {
-   found_path = 1;
-   return msysPath;
+   /* if current 

[msysGit] [cheetah] [PATCH] Add ability to install for the current user only.

2008-01-25 Thread Kirill

They may be useful if the installation is allowed for users without
Administrator privileges.
---
 Makefile|   18 +++
 install-user.reg.in |   58 +++
 systeminfo.c|   33 
 uninstall-user.reg  |   27 +++
 4 files changed, 121 insertions(+), 15 deletions(-)
 create mode 100644 install-user.reg.in
 create mode 100644 uninstall-user.reg

diff --git a/Makefile b/Makefile
index 6c5d576..11ad280 100644
--- a/Makefile
+++ b/Makefile
@@ -23,15 +23,23 @@ factory.o: factory.h ext.h menu.h
 menu.o: menu.h ext.h debug.h systeminfo.h
 systeminfo.o: systeminfo.h

-install: all install.reg
-   regsvr32 -s git_shell_ext.dll
-   regedit -s install.reg
+install: install.reg all
+   regsvr32 -s $(DLL_PATH)
+   regedit -s $<
+
+install-user: install-user.reg all
+   regsvr32 -s $(DLL_PATH)
+   regedit -s $<

 uninstall:
-   regsvr32 -u -s git_shell_ext.dll
+   regsvr32 -u -s $(DLL_PATH)
regedit -s uninstall.reg

-install.reg: install.reg.in Makefile
+uninstall-user:
+   regsvr32 -u -s $(DLL_PATH)
+   regedit -s uninstall-user.reg
+
+%.reg: %.reg.in Makefile
sed < $< > $@ \
-e 's|@@MSYSGIT_PATH@@|$(MSYSGIT_PATH)|' \
-e 's|@@DLL_PATH@@|$(DLL_PATH)|'
diff --git a/install-user.reg.in b/install-user.reg.in
new file mode 100644
index 000..8231510
--- /dev/null
+++ b/install-user.reg.in
@@ -0,0 +1,58 @@
+Windows Registry Editor Version 5.00
+
+; This registry file creates neccessary entries for installation.
+;  If you change this file, keep uninstall.reg in sync! 
+;
+; This file is slated for being generated and not hard-coded.
+
+[HKEY_CURRENT_USER\SOFTWARE\Git-Cheetah]
+
+[HKEY_CURRENT_USER\SOFTWARE\Git-Cheetah]
+"PathToMsys"="@@MSYSGIT_PATH@@"
+
+[HKEY_CURRENT_USER\Software\Classes\CLSID\{ca586c80-7c84-4b88-8537-726724df6929}]
+
+[HKEY_CURRENT_USER\Software\Classes\CLSID\{ca586c80-7c84-4b88-8537-726724df6929}]
[EMAIL PROTECTED]"Git-Cheetah"
+
+[HKEY_CURRENT_USER\Software\Classes\CLSID\{ca586c80-7c84-4b88-8537-726724df6929}\InProcServer32]
[EMAIL PROTECTED]"@@DLL_PATH@@"
+
+[HKEY_CURRENT_USER\Software\Classes\CLSID\{ca586c80-7c84-4b88-8537-726724df6929}\InProcServer32]
+"ThreadingModel"="Apartment"
+
+[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
Extensions\Approved]
+"{ca586c80-7c84-4b88-8537-726724df6929}"="Git-Cheetah"
+
+[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
Extensions\Approved\{ca586c80-7c84-4b88-8537-726724df6929}]
[EMAIL PROTECTED]"Git-Cheetah"
+
+[HKEY_CURRENT_USER\Software\Classes\*\shellex\ContextMenuHandlers\Git-Cheetah]
+
+[HKEY_CURRENT_USER\Software\Classes\*\shellex\ContextMenuHandlers\Git-Cheetah]
[EMAIL PROTECTED]"{ca586c80-7c84-4b88-8537-726724df6929}"
+
+[HKEY_CURRENT_USER\Software\Classes\Directory\shellex\ContextMenuHandlers\Git-Cheetah]
+
+[HKEY_CURRENT_USER\Software\Classes\Directory\shellex\ContextMenuHandlers\Git-Cheetah]
[EMAIL PROTECTED]"{ca586c80-7c84-4b88-8537-726724df6929}"
+
+[HKEY_CURRENT_USER\Software\Classes\Directory\Background\shellex\ContextMenuHandlers\Git-Cheetah]
+
+[HKEY_CURRENT_USER\Software\Classes\Directory\Background\shellex\ContextMenuHandlers\Git-Cheetah]
[EMAIL PROTECTED]"{ca586c80-7c84-4b88-8537-726724df6929}"
+
+[HKEY_CURRENT_USER\Software\Classes\Drive\shellex\ContextMenuHandlers\Git-Cheetah]
+
+[HKEY_CURRENT_USER\Software\Classes\Drive\shellex\ContextMenuHandlers\Git-Cheetah]
[EMAIL PROTECTED]"{ca586c80-7c84-4b88-8537-726724df6929}"
+
+[HKEY_CURRENT_USER\Software\Classes\Folder\shellex\ContextMenuHandlers\Git-Cheetah]
+
+[HKEY_CURRENT_USER\Software\Classes\Folder\shellex\ContextMenuHandlers\Git-Cheetah]
[EMAIL PROTECTED]"{ca586c80-7c84-4b88-8537-726724df6929}"
+
+[HKEY_CURRENT_USER\Software\Classes\InternetShortcut\shellex\ContextMenuHandlers\Git-Cheetah]
+
+[HKEY_CURRENT_USER\Software\Classes\InternetShortcut\shellex\ContextMenuHandlers\Git-Cheetah]
[EMAIL PROTECTED]"{ca586c80-7c84-4b88-8537-726724df6929}"
diff --git a/systeminfo.c b/systeminfo.c
index 08429bf..07444d6 100644
--- a/systeminfo.c
+++ b/systeminfo.c
@@ -8,32 +8,45 @@ TCHAR * msys_path(void)
static int found_path = 0;
HKEY hKey;
LONG lRet;
+   DWORD msysPathLen = MAX_PATH * sizeof(TCHAR);

/* Only bother to get it once. */
if (found_path)
return msysPath;

-   lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+   /* try to find user-specific settings first */
+   lRet = RegOpenKeyEx(HKEY_CURRENT_USER,
TEXT(GIT_CHEETAH_REG_PATH),
0, KEY_QUERY_VALUE, &hKey);
-   
-   if (lRet == ERROR_SUCCESS)
-   {
-   DWORD msysPathLen = MAX_PATH * sizeof(TCHAR);
-   
+   if (ERROR_SUCCESS == lRet) {
lRet = RegQueryValueEx(hKey,
   

[msysGit] [cheetah] [PATCH] Add ability to install for the current user only

2008-01-24 Thread Kirill

They may be useful if the installation is allowed for users without
Administrator privileges.

In addition, the following two might be interesting as per "Debugging
with the Shell" on MSDN:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]
DesktopProcess= 1

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\
 AlwaysUnloadDll]
---
 Makefile|   13 +++
 install-user.reg.in |   58 +++
 systeminfo.c|6 +
 uninstall-user.reg  |   27 +++
 4 files changed, 104 insertions(+), 0 deletions(-)
 create mode 100644 install-user.reg.in
 create mode 100644 uninstall-user.reg

diff --git a/Makefile b/Makefile
index 6c5d576..0513fec 100644
--- a/Makefile
+++ b/Makefile
@@ -27,14 +27,27 @@ install: all install.reg
regsvr32 -s git_shell_ext.dll
regedit -s install.reg

+install-user: all install-user.reg
+   regsvr32 -s git_shell_ext.dll
+   regedit -s install.reg
+
 uninstall:
regsvr32 -u -s git_shell_ext.dll
regedit -s uninstall.reg

+uninstall-user:
+   regsvr32 -u -s git_shell_ext.dll
+   regedit -s uninstall-user.reg
+
 install.reg: install.reg.in Makefile
sed < $< > $@ \
-e 's|@@MSYSGIT_PATH@@|$(MSYSGIT_PATH)|' \
-e 's|@@DLL_PATH@@|$(DLL_PATH)|'

+install-user.reg: install-user.reg.in Makefile
+   sed < $< > $@ \
+   -e 's|@@MSYSGIT_PATH@@|$(MSYSGIT_PATH)|' \
+   -e 's|@@DLL_PATH@@|$(DLL_PATH)|'
+
 clean:
-rm -f $(OBJECTS) $(TARGET)
diff --git a/install-user.reg.in b/install-user.reg.in
new file mode 100644
index 000..8231510
--- /dev/null
+++ b/install-user.reg.in
@@ -0,0 +1,58 @@
+Windows Registry Editor Version 5.00
+
+; This registry file creates neccessary entries for installation.
+;  If you change this file, keep uninstall.reg in sync! 
+;
+; This file is slated for being generated and not hard-coded.
+
+[HKEY_CURRENT_USER\SOFTWARE\Git-Cheetah]
+
+[HKEY_CURRENT_USER\SOFTWARE\Git-Cheetah]
+"PathToMsys"="@@MSYSGIT_PATH@@"
+
+[HKEY_CURRENT_USER\Software\Classes\CLSID\{ca586c80-7c84-4b88-8537-726724df6929}]
+
+[HKEY_CURRENT_USER\Software\Classes\CLSID\{ca586c80-7c84-4b88-8537-726724df6929}]
[EMAIL PROTECTED]"Git-Cheetah"
+
+[HKEY_CURRENT_USER\Software\Classes\CLSID\{ca586c80-7c84-4b88-8537-726724df6929}\InProcServer32]
[EMAIL PROTECTED]"@@DLL_PATH@@"
+
+[HKEY_CURRENT_USER\Software\Classes\CLSID\{ca586c80-7c84-4b88-8537-726724df6929}\InProcServer32]
+"ThreadingModel"="Apartment"
+
+[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
Extensions\Approved]
+"{ca586c80-7c84-4b88-8537-726724df6929}"="Git-Cheetah"
+
+[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
Extensions\Approved\{ca586c80-7c84-4b88-8537-726724df6929}]
[EMAIL PROTECTED]"Git-Cheetah"
+
+[HKEY_CURRENT_USER\Software\Classes\*\shellex\ContextMenuHandlers\Git-Cheetah]
+
+[HKEY_CURRENT_USER\Software\Classes\*\shellex\ContextMenuHandlers\Git-Cheetah]
[EMAIL PROTECTED]"{ca586c80-7c84-4b88-8537-726724df6929}"
+
+[HKEY_CURRENT_USER\Software\Classes\Directory\shellex\ContextMenuHandlers\Git-Cheetah]
+
+[HKEY_CURRENT_USER\Software\Classes\Directory\shellex\ContextMenuHandlers\Git-Cheetah]
[EMAIL PROTECTED]"{ca586c80-7c84-4b88-8537-726724df6929}"
+
+[HKEY_CURRENT_USER\Software\Classes\Directory\Background\shellex\ContextMenuHandlers\Git-Cheetah]
+
+[HKEY_CURRENT_USER\Software\Classes\Directory\Background\shellex\ContextMenuHandlers\Git-Cheetah]
[EMAIL PROTECTED]"{ca586c80-7c84-4b88-8537-726724df6929}"
+
+[HKEY_CURRENT_USER\Software\Classes\Drive\shellex\ContextMenuHandlers\Git-Cheetah]
+
+[HKEY_CURRENT_USER\Software\Classes\Drive\shellex\ContextMenuHandlers\Git-Cheetah]
[EMAIL PROTECTED]"{ca586c80-7c84-4b88-8537-726724df6929}"
+
+[HKEY_CURRENT_USER\Software\Classes\Folder\shellex\ContextMenuHandlers\Git-Cheetah]
+
+[HKEY_CURRENT_USER\Software\Classes\Folder\shellex\ContextMenuHandlers\Git-Cheetah]
[EMAIL PROTECTED]"{ca586c80-7c84-4b88-8537-726724df6929}"
+
+[HKEY_CURRENT_USER\Software\Classes\InternetShortcut\shellex\ContextMenuHandlers\Git-Cheetah]
+
+[HKEY_CURRENT_USER\Software\Classes\InternetShortcut\shellex\ContextMenuHandlers\Git-Cheetah]
[EMAIL PROTECTED]"{ca586c80-7c84-4b88-8537-726724df6929}"
diff --git a/systeminfo.c b/systeminfo.c
index 08429bf..388faf3 100644
--- a/systeminfo.c
+++ b/systeminfo.c
@@ -16,6 +16,12 @@ TCHAR * msys_path(void)
lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
TEXT(GIT_CHEETAH_REG_PATH),
0, KEY_QUERY_VALUE, &hKey);
+
+   /* If we failed to find it in the machine-wide, try current user */
+   if (ERROR_SUCCESS != lRet)
+   lRet = RegOpenKeyEx(HKEY_CURRENT_USER,
+   TEXT(GIT_CHEETAH_REG_PATH),
+   0, KEY_QUERY_VALUE, &hKey);

if (lRet == ERROR_SUCCESS)
{
diff --git