Commit 20f4c5d090fa6ce3664ba9308e1b1f9d90b948a5
1 parent
4870467d
Exists in
master
and in
1 other branch
Workin in automatic detection of application path when running on
windows.
Showing
1 changed file
with
25 additions
and
7 deletions
Show diff stats
client/src/session/local/session.cc
| ... | ... | @@ -106,6 +106,29 @@ |
| 106 | 106 | } |
| 107 | 107 | |
| 108 | 108 | } |
| 109 | + | |
| 110 | + static HKEY openKey() { | |
| 111 | + | |
| 112 | + LSTATUS rc; | |
| 113 | + HKEY hKey = 0; | |
| 114 | + | |
| 115 | + rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\pw3270",0,KEY_QUERY_VALUE,&hKey); | |
| 116 | + if(rc == ERROR_SUCCESS) { | |
| 117 | + return hKey; | |
| 118 | + } | |
| 119 | + | |
| 120 | + write_log("Can't open HKLM\\Software\\pw3270", (int) rc); | |
| 121 | + | |
| 122 | + rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\pw3270",0,KEY_QUERY_VALUE,&hKey); | |
| 123 | + if(rc == ERROR_SUCCESS) { | |
| 124 | + return hKey; | |
| 125 | + } | |
| 126 | + | |
| 127 | + write_log("Can't open HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\pw3270", (int) rc); | |
| 128 | + | |
| 129 | + return 0; | |
| 130 | + } | |
| 131 | + | |
| 109 | 132 | #endif // _WIN32 |
| 110 | 133 | |
| 111 | 134 | Local::Session::Session() : Abstract::Session() { |
| ... | ... | @@ -123,13 +146,12 @@ |
| 123 | 146 | // https://github.com/curl/curl/blob/master/lib/system_win32.c |
| 124 | 147 | |
| 125 | 148 | char datadir[4096]; |
| 126 | - HKEY hKey = 0; | |
| 149 | + HKEY hKey = openKey(); | |
| 127 | 150 | unsigned long datalen = sizeof(datadir); |
| 128 | 151 | |
| 129 | 152 | memset(datadir,0,sizeof(datadir)); |
| 130 | 153 | |
| 131 | - LSTATUS rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\pw3270",0,KEY_QUERY_VALUE,&hKey); | |
| 132 | - if(rc == ERROR_SUCCESS) { | |
| 154 | + if(hKey) { | |
| 133 | 155 | |
| 134 | 156 | unsigned long datatype; // #defined in winnt.h (predefined types 0-11) |
| 135 | 157 | |
| ... | ... | @@ -142,10 +164,6 @@ |
| 142 | 164 | |
| 143 | 165 | RegCloseKey(hKey); |
| 144 | 166 | |
| 145 | - } else { | |
| 146 | - | |
| 147 | - write_log("Can't open HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\pw3270", (int) rc); | |
| 148 | - | |
| 149 | 167 | } |
| 150 | 168 | |
| 151 | 169 | if(*datadir) { | ... | ... |