Я пишу интерфейс LDAP, который для objectguid
данной группы должен возвращать список всех пользователей в этих группах вместе с SID пользователя.Запрос LDAP для возврата всех пользователей в группу
Для данной группы objectguid
приведенный ниже код возвращает пользователей в этой группе. Однако они все в форме ...
CN=Chad Hutchins,OU=Contractors,DC=RM,DC=LOCAL
... но мне нужен SID пользователя по сравнению с приведенной выше строкой. Есть ли способ получить SID пользователя, начиная с группы и запрашивая для всех пользователей в этой группе?
using System.DirectoryServices;
public void GetUsers(Guid groupId, string domain, string username, string password)
{
var rootEntry = new DirectoryEntry("LDAP://" + domain);
rootEntry.Username = username;
rootEntry.Password = password;
var searcher = new DirectorySearcher(rootEntry);
searcher.Filter = @"(objectguid=" + ConvertGuidToOctectString(groupId) + ")";
var groupResult = searcher.FindOne();
foreach (DictionaryEntry prop in groupResult.Properties)
{
var key = (string)prop.Key;
switch (key)
{
case "member":
foreach (string name in groupResult.Properties[key])
Console.WriteLine(name);
break;
}
}
}
private string ConvertGuidToOctectString(Guid guid)
{
var byteGuid = guid.ToByteArray();
var queryGuid = string.Empty;
foreach (var b in byteGuid)
{
queryGuid += @"\" + b.ToString("x2");
}
return queryGuid;
}
Можете ли вы использовать класс 'AccountManagement'? Было бы очень легко получить пользовательский «SID». Если нет, то то, что вы можете сделать, это сохранить все 'DistinguishedName' всех членов внутри списка строк, а затем выполнить поиск пользователей по их DN, а затем вы можете получить« SID ». – smr5