Microsoft AD GUID 不匹配

Microsoft AD GUID Mismatch

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

我以前见过这个问题。这是由不同工具对 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