public void EnumUsers(EnumUsersDelegate callback, UserAccountFlags flags) { NtStatus status; int enumerationContext = 0; IntPtr buffer; int count; while (true) { status = Win32.SamEnumerateUsersInDomain( this, ref enumerationContext, flags, out buffer, 0x100, out count ); if (status >= NtStatus.Error) { Win32.Throw(status); } if (count == 0) { break; } using (var bufferAlloc = new SamMemoryAlloc(buffer)) { for (int i = 0; i < count; i++) { var data = bufferAlloc.ReadStruct <SamRidEnumeration>(i); if (!callback(data.Name.Read(), data.RelativeId)) { return; } } } } }
public void EnumUsers(EnumUsersDelegate callback, UserAccountFlags flags) { int enumerationContext = 0; IntPtr buffer; int count; while (true) { Win32.SamEnumerateUsersInDomain( this, ref enumerationContext, flags, out buffer, 0x100, out count ).ThrowIf(); if (count == 0) { break; } using (SamMemoryAlloc bufferAlloc = new SamMemoryAlloc(buffer)) { for (int i = 0; i < count; i++) { var data = bufferAlloc.ReadStruct <SamRidEnumeration>(0, SamRidEnumeration.SizeOf, i); if (!callback(data.Name.Text, data.RelativeId)) { return; } } } } }
public void EnumUsers(EnumUsersDelegate callback) { this.EnumUsers(callback, UserAccountFlags.AccountTypeMask); }