diff --git a/dlls/wldap32/init.c b/dlls/wldap32/init.c
index 46a078a..6b413f8 100644
--- a/dlls/wldap32/init.c
+++ b/dlls/wldap32/init.c
@@ -206,6 +206,17 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(wldap32);
 
+#ifdef HAVE_LDAP
+static LDAP *create_context( const char *url )
+{
+    LDAP *ld;
+    int version = LDAP_VERSION3;
+    if (ldap_initialize( &ld, url ) != LDAP_SUCCESS) return NULL;
+    ldap_set_option( ld, LDAP_OPT_PROTOCOL_VERSION, &version );
+    return ld;
+}
+#endif
+
 /***********************************************************************
  *      cldap_openA     (WLDAP32.@)
  *
@@ -276,7 +287,7 @@
     url = urlify_hostnames( "cldap://", hostnameU, portnumber );
     if (!url) goto exit;
 
-    ldap_initialize( &ld, url );
+    ld = create_context( url );
 
 exit:
     strfreeU( hostnameU );
@@ -385,7 +396,7 @@
     url = urlify_hostnames( "ldap://", hostnameU, portnumber );
     if (!url) goto exit;
 
-    ldap_initialize( &ld, url );
+    ld = create_context( url );
 
 exit:
     strfreeU( hostnameU );
@@ -467,7 +478,7 @@
     url = urlify_hostnames( "ldap://", hostnameU, portnumber );
     if (!url) goto exit;
 
-    ldap_initialize( &ld, url );
+    ld = create_context( url );
 
 exit:
     strfreeU( hostnameU );
diff --git a/dlls/wldap32/tests/parse.c b/dlls/wldap32/tests/parse.c
index 5c84929..c4c97e1 100644
--- a/dlls/wldap32/tests/parse.c
+++ b/dlls/wldap32/tests/parse.c
@@ -123,6 +123,15 @@
     ok( !ret, "ldap_set_optionW failed 0x%08x\n", ret );
 }
 
+static void test_ldap_get_optionW( LDAP *ld )
+{
+    ULONG ret, version;
+
+    ret = ldap_get_optionW( ld, LDAP_OPT_PROTOCOL_VERSION, &version );
+    ok( !ret, "ldap_get_optionW failed 0x%08x\n", ret );
+    ok( version == LDAP_VERSION3, "got %u\n", version );
+}
+
 START_TEST (parse)
 {
     LDAP *ld;
@@ -132,6 +141,7 @@
 
     test_ldap_parse_sort_control( ld );
     test_ldap_search_extW( ld );
+    test_ldap_get_optionW( ld );
     test_ldap_set_optionW( ld );
     ldap_unbind( ld );
 }
