Как прочитать свойство "uSNChanged" с помощью C#
Я хочу получить последние измененные или созданные атрибуты через uSNChanged
значение в ActiveDirectory с помощью C# ... Я также пытался найти максимальное значение uSNChanged
Можете ли вы помочь мне найти решение? Спасибо
2 ответа
Есть два способа получить uSNChanged
собственность через.NET:
Включите ссылку на библиотеку COM: "Active DS Type Library", тогда вам нужно использовать
IADsLargeInterger
чтобы получить значение и, наконец, преобразовать его вlong
, Например:IADsLargeInteger li_ad = (IADsLargeInteger)oUser.Properties["USNChanged"].Value; long l_uChanged = GetLongFromLargeInteger( li_ad ); static long GetLongFromLargeInteger( IADsLargeInteger Li ) { long retval = Li.HighPart; retval <<=32; retval |=(uint)Li.LowPart; return retval; }
Переведите значения только с помощью C#. Благодаря Саймону Гилби, у нас есть эта опция:
long usnChanged = CovertADSLargeIntegerToInt64(oUser.Properties["USNChanged"].Value); public static Int64 ConvertADSLargeIntegerToInt64(object adsLargeInteger) { var highPart = (Int32)adsLargeInteger.GetType().InvokeMember("HighPart", System.Reflection.BindingFlags.GetProperty, null, adsLargeInteger, null); var lowPart = (Int32)adsLargeInteger.GetType().InvokeMember("LowPart", System.Reflection.BindingFlags.GetProperty, null, adsLargeInteger, null); return highPart * ((Int64)UInt32.MaxValue + 1) + lowPart; }
Я настоятельно рекомендую вам использовать вариант № 2, чтобы избежать проблем с устаревшей библиотекой ActiveDs, и вам не понадобятся ответы из этого списка.
Я получил решение, ребята, мы можем получить максимальное значение usnolated контроллера домена через этот атрибут HighestCommittedUsn