Cygwin: get_user_groups: fetch a user's group list from identification token
NetUserGetGroups and NetUserGetLocalGroups sometimes take a lot of time (up to more than 2 mins) for no apparent reason. Call s4uauth to generate an identification token for the user and fetch the group list from there. This is *much* faster. Keep the old code only for the sake of WOW64 on Vista and Windows 7, which don't implement MsV1_0S4ULogon. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
@@ -39,6 +39,7 @@ wincaps wincap_vista __attribute__((section (".cygwin_dll_common"), shared)) = {
|
||||
has_posix_unlink_semantics:false,
|
||||
has_case_sensitive_dirs:false,
|
||||
has_posix_rename_semantics:false,
|
||||
no_msv1_0_s4u_logon_in_wow64:true,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -63,6 +64,7 @@ wincaps wincap_7 __attribute__((section (".cygwin_dll_common"), shared)) = {
|
||||
has_posix_unlink_semantics:false,
|
||||
has_case_sensitive_dirs:false,
|
||||
has_posix_rename_semantics:false,
|
||||
no_msv1_0_s4u_logon_in_wow64:true,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -87,6 +89,7 @@ wincaps wincap_8 __attribute__((section (".cygwin_dll_common"), shared)) = {
|
||||
has_posix_unlink_semantics:false,
|
||||
has_case_sensitive_dirs:false,
|
||||
has_posix_rename_semantics:false,
|
||||
no_msv1_0_s4u_logon_in_wow64:false,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -111,6 +114,7 @@ wincaps wincap_10_1507 __attribute__((section (".cygwin_dll_common"), shared))
|
||||
has_posix_unlink_semantics:false,
|
||||
has_case_sensitive_dirs:false,
|
||||
has_posix_rename_semantics:false,
|
||||
no_msv1_0_s4u_logon_in_wow64:false,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -135,6 +139,7 @@ wincaps wincap_10_1511 __attribute__((section (".cygwin_dll_common"), shared)) =
|
||||
has_posix_unlink_semantics:false,
|
||||
has_case_sensitive_dirs:false,
|
||||
has_posix_rename_semantics:false,
|
||||
no_msv1_0_s4u_logon_in_wow64:false,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -159,6 +164,7 @@ wincaps wincap_10_1703 __attribute__((section (".cygwin_dll_common"), shared)) =
|
||||
has_posix_unlink_semantics:false,
|
||||
has_case_sensitive_dirs:false,
|
||||
has_posix_rename_semantics:false,
|
||||
no_msv1_0_s4u_logon_in_wow64:false,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -183,6 +189,7 @@ wincaps wincap_10_1709 __attribute__((section (".cygwin_dll_common"), shared)) =
|
||||
has_posix_unlink_semantics:true,
|
||||
has_case_sensitive_dirs:false,
|
||||
has_posix_rename_semantics:false,
|
||||
no_msv1_0_s4u_logon_in_wow64:false,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -207,6 +214,7 @@ wincaps wincap_10_1803 __attribute__((section (".cygwin_dll_common"), shared)) =
|
||||
has_posix_unlink_semantics:true,
|
||||
has_case_sensitive_dirs:true,
|
||||
has_posix_rename_semantics:false,
|
||||
no_msv1_0_s4u_logon_in_wow64:false,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -231,6 +239,7 @@ wincaps wincap_10_1809 __attribute__((section (".cygwin_dll_common"), shared)) =
|
||||
has_posix_unlink_semantics:true,
|
||||
has_case_sensitive_dirs:true,
|
||||
has_posix_rename_semantics:true,
|
||||
no_msv1_0_s4u_logon_in_wow64:true,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -303,6 +312,7 @@ wincapc::init ()
|
||||
((wincaps *)caps)->needs_count_in_si_lpres2 = false;
|
||||
((wincaps *)caps)->has_gaa_largeaddress_bug = false;
|
||||
((wincaps *)caps)->has_broken_prefetchvm = false;
|
||||
((wincaps *)caps)->no_msv1_0_s4u_logon_in_wow64 = false;
|
||||
}
|
||||
|
||||
__small_sprintf (osnam, "NT-%d.%d", version.dwMajorVersion,
|
||||
|
Reference in New Issue
Block a user