Ich möchte die Gruppenmitgliedschaften eines Benutzers in einem ActiveDirectory abrufen, ohne in der Domäne zu sein. Wenn ich das innerhalb der Domain starte, ist alles in Ordnung.Fragen Sie die Rollen eines Benutzers in AD, wenn der Anrufer nicht in der Domäne ist
var context = new PrincipalContext(ContextType.Domain);
var principal = UserPrincipal.FindByIdentity(context, IdentityType.Name, "administrator");
foreach (var authorizationGroup in principal.GetAuthorizationGroups())
{
Console.WriteLine(authorizationGroup.Name);
}
Allerdings, wenn ich außerhalb der Domäne ausgeführt, muss ich angeben, die diese liegen Principal:
var context = new PrincipalContext(ContextType.Domain, "10.0.1.255", "DC=test,DC=ad,DC=be", "administrator", "password");
Wenn ich diesen Code ausführen, ich eine Ausnahme, wenn ich principal.GetAuthorizationGroups()
auszuführen. Die Ausnahme, die ich bekomme, ist:
System.DirectoryServices.AccountManagement.PrincipalOperationException: Information about the domain could not be retrieved (1355).
at System.DirectoryServices.AccountManagement.Utils.GetDcName(String computerName, String domainName, String siteName, Int32 flags)
at System.DirectoryServices.AccountManagement.ADStoreCtx.LoadDomainInfo()
at System.DirectoryServices.AccountManagement.ADStoreCtx.get_DnsDomainName()
at System.DirectoryServices.AccountManagement.ADStoreCtx.GetGroupsMemberOfAZ(Principal p)
at System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroupsHelper()
at System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroups()
Ich hatte dieses Problem. Das Ausführen von "nslookup yourdomain" sollte zu Ihrem Domänencontroller aufgelöst werden. – T3hc13h