I want to get the last modified or created attributes via the uSNChanged
value in ActiveDirectory using C# ... I was also trying to find the max value of uSNChanged
, can you help me to find out the solution? Thanks
There are two ways to retrieve the uSNChanged
property via .NET:
Include a reference to a COM library: "Active DS Type Library", then you need to use the IADsLargeInterger
to retrieve the value and finally convert it to a long
. For example:
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;
}
Translate the values only using C#. Thanks to Simon Gilbee, we have this option:
long usnChanged = ConvertADSLargeIntegerToInt64(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;
}
I highly recommend you go with Option #2 to avoid problems with the legacy ActiveDs library and won't need answers off this list.
i got the solution guys,we can get a maximum usnchanged value of a domaincontroller through this attribute HighestCommittedUsn
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With