次のコード行で、ユーザーがドメイン管理者であるかどうかを確認できます。
using (DirectoryEntry domainEntry = new DirectoryEntry(string.Format("LDAP://{0}", domain)))
{
byte[] domainSIdArray = (byte[])domainEntry.Properties["objectSid"].Value;
SecurityIdentifier domainSId = new SecurityIdentifier(domainSIdArray, 0);
SecurityIdentifier domainAdminsSId = new SecurityIdentifier(WellKnownSidType.AccountDomainAdminsSid, domainSId);
using (DirectoryEntry groupEntry = new DirectoryEntry(string.Format("LDAP://<SID={0}>", BuildOctetString(domainAdminsSId))))
{
string adminDn = groupEntry.Properties["distinguishedname"].Value as string;
SearchResult result = (new DirectorySearcher(domainEntry, string.Format("(&(objectCategory=user)(samAccountName={0}))", userName), new[] { "memberOf" })).FindOne();
return result.Properties["memberOf"].Contains(adminDn);
}
}
詳細はこちら
しかし、ドメイン コントローラーがオフになっている場合、またはオフライン (接続なし) の場合、次のエラーが発生します。
サーバーが動作していません。
System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
で System.DirectoryServices.DirectoryEntry.Bind()
で System.DirectoryServices.DirectoryEntry.get_AdsObject()
で System.DirectoryServices.PropertyValueCollection.PopulateList()
で System.DirectoryServices.PropertyValueCollection..
System.DirectoryServices.PropertyCollection.get_Item(String propertyName)の ctor(DirectoryEntry entry, String propertyName)
ユーザーがドメイン コントローラーをオフにしてドメイン管理者であるかどうかを確認する機能はありますか?