problem about openconnect6.0 Windows client
David Woodhouse
dwmw2 at infradead.org
Thu Jul 24 07:33:10 PDT 2014
On Thu, 2014-07-24 at 19:59 +0800, 飞翔 wrote:
>
> Question 2:
> When I run it on XP,the openconnect client will show a error
> dialog(can't find Entry RegGetValueA in ADVAPI32.dll).
> so,does the openconnect6.0 client for Windows support for XP?
Does this fix that?
diff --git a/tun-win32.c b/tun-win32.c
index c4acd92..28d530c 100644
--- a/tun-win32.c
+++ b/tun-win32.c
@@ -59,8 +59,8 @@ typedef intptr_t (tap_callback)(struct openconnect_info *vpninfo, char *idx, cha
static intptr_t search_taps(struct openconnect_info *vpninfo, tap_callback *cb, int all)
{
LONG status;
- HKEY adapters_key;
- DWORD len;
+ HKEY adapters_key, hkey;
+ DWORD len, type;
char buf[40], name[40];
char keyname[strlen(CONNECTIONS_KEY) + sizeof(buf) + 1 + strlen("\\Connection")];
int i = 0, found = 0;
@@ -86,29 +86,41 @@ static intptr_t search_taps(struct openconnect_info *vpninfo, tap_callback *cb,
snprintf(keyname, sizeof(keyname), "%s\\%s",
ADAPTERS_KEY, buf);
+ status = RegOpenKeyEx(HKEY_LOCAL_MACHINE, keyname, 0,
+ KEY_QUERY_VALUE, &hkey);
+ if (status)
+ continue;
+
len = sizeof(buf);
- status = RegGetValue(HKEY_LOCAL_MACHINE, keyname,
- "ComponentId", RRF_RT_REG_SZ,
- NULL, buf, &len);
- if (status || strcmp(buf, TAP_COMPONENT_ID))
+ status = RegQueryValueEx(hkey, "ComponentId", NULL, &type,
+ (unsigned char *)buf, &len);
+ if (status || type != REG_SZ || strcmp(buf, TAP_COMPONENT_ID)) {
+ RegCloseKey(hkey);
continue;
+ }
len = sizeof(buf);
- status = RegGetValue(HKEY_LOCAL_MACHINE, keyname,
- "NetCfgInstanceId", RRF_RT_REG_SZ,
- NULL, buf, &len);
- if (status)
+ status = RegQueryValueEx(hkey, "NetCfgInstanceId", NULL,
+ &type, (unsigned char *)buf, &len);
+ RegCloseKey(hkey);
+ if (status || type != REG_SZ)
continue;
snprintf(keyname, sizeof(keyname), "%s\\%s\\Connection",
CONNECTIONS_KEY, buf);
- len = sizeof(name);
- status = RegGetValue(HKEY_LOCAL_MACHINE, keyname, "Name",
- RRF_RT_REG_SZ, NULL, name, &len);
+ status = RegOpenKeyEx(HKEY_LOCAL_MACHINE, keyname, 0,
+ KEY_QUERY_VALUE, &hkey);
if (status)
continue;
+ len = sizeof(name);
+ status = RegQueryValueEx(hkey, "Name", NULL, &type,
+ (unsigned char *)name, &len);
+ RegCloseKey(hkey);
+ if (status || type != REG_SZ)
+ continue;
+
found++;
if (vpninfo->ifname && strcmp(name, vpninfo->ifname)) {
--
dwmw2
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 5745 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openconnect-devel/attachments/20140724/1387b0a8/attachment.bin>
More information about the openconnect-devel
mailing list