mirror of https://github.com/dahall/Vanara.git
30 lines
957 B
C#
30 lines
957 B
C#
#if (NET20 || NET35 || NET40 || NET45)
|
|
using System;
|
|
using System.Linq;
|
|
using System.DirectoryServices.ActiveDirectory;
|
|
using Vanara.Extensions.Reflection;
|
|
using static Vanara.PInvoke.NTDSApi;
|
|
|
|
namespace Vanara.Extensions
|
|
{
|
|
public static class ActiveDirectoryExtension
|
|
{
|
|
public static string[] CrackNames(this DomainController dc, string[] names,
|
|
DS_NAME_FORMAT formatDesired = DS_NAME_FORMAT.DS_USER_PRINCIPAL_NAME,
|
|
DS_NAME_FORMAT formatOffered = DS_NAME_FORMAT.DS_NT4_ACCOUNT_NAME,
|
|
DS_NAME_FLAGS flags = DS_NAME_FLAGS.DS_NAME_NO_FLAGS)
|
|
{
|
|
lock (dc)
|
|
using (var ds = dc.GetHandle())
|
|
return DsCrackNames(ds, names, formatDesired, formatOffered, flags).Select(r => r.pName).ToArray();
|
|
}
|
|
|
|
public static SafeDsHandle GetHandle(this DomainController dc)
|
|
{
|
|
var hDc = dc.GetPropertyValue("Handle", IntPtr.Zero);
|
|
if (hDc == IntPtr.Zero) throw new InvalidOperationException();
|
|
return new SafeDsHandle(hDc);
|
|
}
|
|
}
|
|
}
|
|
#endif |