먼저 현재 사용자의 모든 AD 그룹을 열거해야합니다. 의 SID와 이름을 얻는 것은 쉽다 : Active Directory 보안 그룹 구성원 수를 계산하십시오.
foreach(var group in WindowsIdentity.GetCurrent().Groups)
{
var sid = new SecurityIdentifier(group.Value);
string name = (group.Translate(typeof(NTAccount)) as NTAccount).Value;
}
는 다음 나는 그룹의 각 구성원의 수를 결정해야하고, 난 그 일을 얻을 수 없습니다. 현재 사용자 그룹의 고유 이름을 얻는 방법이 필요합니다. 그걸 어떻게 알아들을 수 있을까요? 내가 지금까지 무슨 짓을
:이 같은 WMI 쿼리를 시도했지만 내가 정규화 된 도메인 이름을 필요가 있기 때문에 어떤 결과를 반환하지만 NTAccount
나에게 단지 "친숙한"도메인 계정 (도메인 \ 그룹)를 제공합니다 :
var adGroupEntry = new DirectoryEntry(String.Format("LDAP://<SID={0}>", group.Value));
if (adGroupEntry != null)
{
IEnumerable members = adGroupEntry.Invoke("Members", null) as IEnumerable;
if (members != null)
{
foreach (object member in members)
{
noOfMembers++;
}
}
}
I :
SELECT PartComponent FROM Win32_GroupUser
WHERE (GroupComponent = "Win32_Group.Domain='somedomain', Name='somegroup'")
그런 다음 나는 그룹의 SID에 결합함으로써 누락 된 경로/고유 이름 주위에 작업 LDAP 시도 그룹이 발견되면 name 속성은 올바른 값을 반환하지만 Members
에는 요소가 포함되지 않습니다. 그룹에 대한 전체 LDAP 경로를 (하드 코드 할 때와 같이) 알면 위의 코드는 실제로 그룹의 올바른 사용자 수를 산출합니다.
무엇이 여기에 있습니까? Active Directory 또는 WMI에 익숙하지 않습니다.
제한 :
- 내가 할 수없는 하드 코드 도메인 이름 또는 LDAP 경로.
- 저는 .NET 2.0으로 제한되어 있으므로
System.DirectoryServices.AccountManagement
을 사용할 수 없습니다.
내 코드와 해결 방법을 테스트 해 주셔서 감사합니다. 실제로 나에게도이 문제가 수정되었습니다.)이 정보의 입력 된 속성에는 QuickWatch의 유용한 콘텐츠가 포함되지 않았으므로 속성과 구분되는 이름을 얻을 수있을 것으로 기대하지 않았습니다. – realMarkusSchmidt