Question: 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

Answer: 
There are two ways to retrieve the `uSNChanged` property via .NET:

1. 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](http://support.microsoft.com/kb/326091):

```
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;
}

```
2. Translate the values only using C#. Thanks to [Simon Gilbee](https://stackoverflow.com/questions/1101022/how-to-change-system-directoryentry-usnchanged-attribute-value-to-an-int64), 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](https://stackoverflow.com/search?q=activeds).
i got the solution guys,we can get a maximum usnchanged value of a domaincontroller through this attribute [HighestCommittedUsn](http://msdn.microsoft.com/en-us/library/system.directoryservices.activedirectory.domaincontroller.highestcommittedusn%28v=vs.90%29.aspx)