如何使用C#读取“uSNChanged”属性
我想通过使用C#的ActiveDirectory中的uSNChanged
值获取最后修改或创建的属性…我也试图找到uSNChanged
的最大值,你能帮我找出解决方案吗? 谢谢
有两种方法可以通过.NET检索uSNChanged
属性:
-
包含对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 = 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库的问题,并且不需要此列表中的答案。
我得到了解决方案的人,我们可以通过此属性HighestCommittedUsn获得域控制器的最大值
- 无法在UWP应用程序中获取某些用户帐户信息 – 内部部署活动目录(非Azure AD)
- System.DirectoryServices.DirectoryServicesCOMException(0x800700EA):有更多数据可用
- ASP.NET如何获取Active Directory中的组列表
- 如何检查LDAP上是否存在用户
- 密码更改Active Directory用户时出错
- LdapConnection与PrincipalContext
- 如何通过WebRequest调用MVC操作并通过Active Directoryvalidation请求?
- 在Active Directory中创建用户:连接到系统的设备无法运行
- 在Active Directory中搜索与电子邮件地址关联的所有用户名