【问题标题】:C# Getting user mS-DS-ConsistencyGuid in Decimal formatC# 以十进制格式获取用户 mS-DS-ConsistencyGuid
【发布时间】:2020-06-07 08:48:27
【问题描述】:

我正在尝试以十进制形式获取属性的值,但始终得出空白值。

在 Active Directory 中,当打开 mS-DS-ConsistencyGuid 属性时,它会打开一个“八位组字符串属性编辑器”。在这个编辑器中,它允许您选择十进制格式(这是我试图让我的 GUI 中的字符串显示为的确切格式。

这是我当前的代码,它可以很好地获取属性/属性,例如 distinctName、userPrincipleName 等,但它返回一个空白值。

一个示例(非真实)值为:026 084 028 230 104 168 129 035 136 021 197 072 054 129 001 167

感谢任何帮助!

using (var ctx = new PrincipalContext(ContextType.Domain, mydomain))        
{
    using (var user = UserPrincipal.FindByIdentity(ctx, UserID))
    {
        if (user != null)
        {
           cguid = ((DirectoryEntry)user.GetUnderlyingObject()).Properties["mS-DS-ConsistencyGuid"].Value as String;
        }
    }
}

【问题讨论】:

    标签: c# .net active-directory ldap


    【解决方案1】:

    与来自 AD 的所有 GUID 值一样(也像 objectGuid),它以字节数组的形式呈现。您可以使用该字节数组创建一个Guid 对象,然后对它做任何您想做的事情:

    var de = ((DirectoryEntry)user.GetUnderlyingObject());
    
    var consistencyGuid = new Guid((byte[]) de.Properties["mS-DS-ConsistencyGuid"].Value);
    
    cguid = consistencyGuid.ToString();
    

    【讨论】:

    • 我试过这个,但是当我将值转换为相同的格式(如上)时,虽然格式正确,但值不正确。
    • var guidBytes = string.Format("0{0:N}", value); var bigInteger = BigInteger.Parse(guidBytes, NumberStyles.HexNumber); var bigString = bigInteger.ToString("N0", CultureInfo.InvariantCulture); bigString = bigString.Replace(',', ' ');返回大字符串;
    • 如果您希望以特定格式显示 Guid,您可以使用我的代码,然后使用 .ToString() 中支持的格式说明符之一
    • 格式正确,只是上面检索到的值与下面不同。我们有另一个实用程序通过 $currUser = Get-ADUser $username -property * -server $domain | 在 PowerShell 中获取此值。选择 * 然后继续: $AttributeDisp.Items.Add("consistencyGUID: " + $currUser."mS-DS-ConsistencyGuid"
    • 这只是显示数组中的每个字节,而不是显示 GUID 的字符串表示形式。如果您想查看数组中的每个字节,只需遍历(byte[]) de.Properties["mS-DS-ConsistencyGuid"].Value。然而,这种格式很少使用。正常的字符串表示是这些字节的十六进制值。您可以在 UUID 的 Wikipedia 页面中阅读更多相关信息:en.wikipedia.org/wiki/Universally_unique_identifier#Format
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    相关资源
    最近更新 更多