public static int CredEnum(string Filter, out Credential[] Credentials) { int count = 0; int Flags = 0x0; if (string.IsNullOrEmpty(Filter) || "*" == Filter) { Filter = null; if (6 <= Environment.OSVersion.Version.Major) { Flags = 0x1; //CRED_ENUMERATE_ALL_CREDENTIALS; only valid is OS >= Vista } } IntPtr pCredentials = IntPtr.Zero; if (!CredEnumerateW(Filter, Flags, out count, out pCredentials)) { Credentials = null; return(Marshal.GetHRForLastWin32Error()); } CriticalCredentialHandle CredHandle = new CriticalCredentialHandle(pCredentials); Credentials = CredHandle.GetCredentials(count); return(0); }
public static int Query(string filter, out Credential[] credentials) { var flags = 0x0; if (string.IsNullOrEmpty(filter) || filter == "*") { filter = null; if (Environment.OSVersion.Version.Major >= 6) // CRED_ENUMERATE_ALL_CREDENTIALS; only valid is OS >= Vista { flags = 0x1; } } if (!CredEnumerateW(filter, flags, out var count, out var credentialPtr)) { credentials = null; return(Marshal.GetHRForLastWin32Error()); } var credentialHandle = new CriticalCredentialHandle(credentialPtr); credentials = credentialHandle.GetCredentials(count); return(0); }