ユーザーがローカル マシンの管理者グループに存在するかどうかを確認するコードがあります。ユーザーが管理者グループに直接存在する場合、コードは正常に機能します
using (DirectoryEntry groupEntry = new DirectoryEntry("WinNT://./Administrators,group")) {
foreach (object member in (IEnumerable)groupEntry.Invoke("Members"))
{
using (DirectoryEntry memberEntry = new DirectoryEntry(member))
{
if (memberEntry.Name.ToLower() == UserName.ToLower())
{
IsUserAdmin = true;
break;
}
}
} }
ただし、ユーザーが AD グループに存在し、その AD グループが管理者グループに追加されている場合、コードは失敗します。もう 1 つのケースは、ユーザーがネストされた AD グループの一部であり、最終的な AD グループが管理者グループに追加される場合です。
ユーザーが直接追加され、関連する AD グループが存在する場合、ユーザーが管理者グループの一部であるかどうかを確認するにはどうすればよいですか?
コードを Windows Server 2008、2008 R2、および 2012 で動作させたい