uSNChanged
C# を使用して、ActiveDirectoryの値を介して、最後に変更または作成された属性を取得したいのですが、 の最大値も見つけようとしuSNChanged
ていました。ありがとう
4507 次
2 に答える
4
uSNChanged
.NET 経由でプロパティを取得するには、次の 2 つの方法があります。
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# のみを使用して値を変換します。Simon Gilbeeのおかげで、次のオプションがあります。
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; }
従来の ActiveDs ライブラリの問題を回避するために、オプション #2 を使用することを強くお勧めします。このリストからの回答は必要ありません。
于 2012-11-20T14:37:46.287 に答える
1
私はソリューションの人を手に入れました、この属性HighestCommittedUsnを介してドメインコントローラーの最大のusnchanged値を取得できます
于 2012-06-09T08:57:15.943 に答える