Microsoft AD GUID不匹配

时间:2016-02-05 14:10:26

标签: active-directory guid

之前可能已经回答过了,但我找不到任何可以帮助我的生活。我们有不同的系统,与较新的系统相比,一些较旧的系统对同一个人有不同的AD指南。 guids看起来很相似,但却不同。这在我正在做的新应用程序中引起了一个大问题,即读取SQL数据库表单以及较旧和较新的应用程序。这是一个示例,较旧的一个是:147e2a1e-579e-a143-88b9-d3a8ee00e609,较新的是1e2a7e14-9e57-43a1-88b9-d3a8ee00e609。如果我用.NET阅读AD,它会给我“更新”的指导。造成这种情况的原因是什么,我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:4)

我以前见过这个问题。它是由不同工具以不同方式解释AD中的位的方式引起的。我打赌你可以通过交换周围的东西将一个转换为另一个。你只需要找出算法。我写了一些代码,在一个实例中修复了类似的东西,可能不是什么能解决你的问题,但应该让你走上正确的道路。

Private Shared Function SymmetricConversion(source As Guid) As Guid

    Dim sourceStr = source.ToString()
    Dim sb = New System.Text.StringBuilder()

    'group 1
    sb.Append(sourceStr.Substring(6, 2))
    sb.Append(sourceStr.Substring(4, 2))
    sb.Append(sourceStr.Substring(2, 2))
    sb.Append(sourceStr.Substring(0, 2))

    sb.Append(sourceStr.Substring(8, 1))

    'group 2
    sb.Append(sourceStr.Substring(11, 2))
    sb.Append(sourceStr.Substring(9, 2))

    sb.Append(sourceStr.Substring(13, 1))

    'group 3
    sb.Append(sourceStr.Substring(16, 2))
    sb.Append(sourceStr.Substring(14, 2))

    'groups 4 and 5
    sb.Append(sourceStr.Substring(18, sourceStr.Length - 18))

    Dim resultStr = sb.ToString()
    Dim result = New Guid(resultStr)
    Return result

End Function