繁体   English   中英

如何使用.net中的nativeguid在Active Directory中找到用户?

[英]How do I find a user in Active Directory using their nativeguid in .net?

我遇到一个问题,其中运行DirectorySearcher并不总是成功返回结果。 例如,我将使用以下方法发送经理的GUID以转换字符串(NativeGuid):

public static string Guid2OctetString(string objectGuid)
{
    System.Guid guid = new Guid(objectGuid);
    byte[] byteGuid = guid.ToByteArray();
    string queryGuid = "";
    foreach (byte b in byteGuid)
    {
        queryGuid += @"\" + b.ToString("x2");
    }
    return queryGuid;
}

据推测,这会将guid字符串转换为Active Directory可用的东西。 当我通过它运行经理的NativeGuid ,我得到了结果。 但是,在应用程序的下一步中,我以相同的方式运行了一个directReports的Guid,但没有结果。 用户确实存在,如果我拉出DirectoryEntry ,则可以获取该条目,但是我不希望完整的条目,因为它处理起来太慢。 我需要能够使用DirectorySearcher来缩小字段的速度。 为什么我在某些用户而不是其他用户的目录搜索中得到鹅蛋?

如果您使用的是.NET 3.5及更高版本,则应签出System.DirectoryServices.AccountManagement (S.DS.AM)命名空间。 在这里阅读所有内容:

基本上,您可以定义域上下文并轻松找到AD中的用户和/或组:

// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.Guid, YourGuid.ToString());

if(user != null)
{
   // do something here....     
}

新的S.DS.AM使得与AD中的用户和组玩起来非常容易!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM