特定のグループのobjectguid
に対して、ユーザーのSIDと共にグループ内のすべてのユーザーの一覧を返す必要があるLDAPインターフェイスを作成しています。グループ内のすべてのユーザーを返す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