2016-02-05 91 views
2

之前可能已經回答了這個問題,但我找不到任何幫助我生活的東西。我們有不同的系統,而一些較舊的系統與新系統相比,對同一個人有不同的AD指導。指導看起來相似,但是不同。這是我正在做的一個新的應用程序中造成的一個大問題,即讀取SQL數據庫表單以及較舊和較新的應用程序。這裏是一個例子,更老的是這樣的:147e2a1e-579e-a143-88b9-d3a8ee00e609和更新的一個是這1e2a7e14-9e57-43a1-88b9-d3a8ee00e609。如果我用.NET讀AD,它會給我「更新」的GUID。這是什麼原因,我能做些什麼來解決它?Microsoft AD GUID不匹配

回答

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 
+1

太棒了!它看起來像你的代碼將實際上解決我的問題。有趣的是,相同的代碼可以轉換兩種方式。 – DarylFranklin52