3

ローカル マシンに 1 人、ドメインに 1 人、2 人のユーザーがいます。: user1&testdomain\user1

現在、これらのユーザーは両方とも異なるグループを持っています

user1 = group1, group3

testdomain\user1 = group2, group4

これらのグループを表示したいのですが、 のグループを表示するのに問題はありませuser1んが、 のグループを表示できませんtestdomain\user1

私のコードは以下の通りです。

DirectoryEntry AD = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
DirectoryEntry user = AD.Children.Find(completeUserName, "user");
object obGroups = user.Invoke("Groups");

foreach (object ob in (IEnumerable)obGroups)
{
    // Create object for each group.
    DirectoryEntry obGpEntry = new DirectoryEntry(ob);
    listOfMyWindowsGroups.Add(obGpEntry.Name);
}

ここで、completeusername = user1 および testdomain\user1

助言がありますか?

4

1 に答える 1

3

.NET 3.5 以降を使用している場合は、System.DirectoryServices.AccountManagementを参照してください。これらのクラスは、非常に簡単に操作できます。例えば、

PrincipalContext pc = new PrincipalContext(ContextType.Domain);
UserPrincipal user = UserPrincipal.FindByIdentity(pc, "johndoe");
var groups = user.GetAuthorizationGroups()  // or user.GetUserGroups() 

そのマシンユーザーの場合は、使用する必要がありますContextType.Machine

また、同じことの概要を少し説明している次の記事もご覧ください。

http://anyrest.wordpress.com/2010/06/28/active-directory-c/

http://msdn.microsoft.com/en-us/magazine/cc135979.aspx#S5

于 2010-12-16T04:24:24.553 に答える