c# – 在不使用ActiveD的情况下强制转换ActiveDirectory pwdLast
发布时间:2020-12-16 00:03:04 所属栏目:百科 来源:网络整理
导读:好.所以我试图找到一种方法来避免在我的项目中包含ActiveD,因为我无法让dll显示在安装程序中.获得它的唯一原因是将pwdLastSet强制转换为LongInteger. 我找到了一个无证的替代品.在测试时,它要么死了,要么关闭429.49673秒.我不知道为什么,有人有任何想法吗?
好.所以我试图找到一种方法来避免在我的项目中包含ActiveD,因为我无法让dll显示在安装程序中.获得它的唯一原因是将pwdLastSet强制转换为LongInteger.
我找到了一个无证的替代品.在测试时,它要么死了,要么关闭429.49673秒.我不知道为什么,有人有任何想法吗? (我测试的20/49人是429.49673秒). 更新:看起来当LowPart为负时会发生这种情况. 码: private static string DateTest() { return DateTest(Environment.UserName); } private static string DateTest(string userName) { userName = userName.Trim(); DateTime hacked,normal; using (DirectorySearcher ds = new DirectorySearcher()) { ds.SearchScope = SearchScope.Subtree; ds.PropertiesToLoad.Add("distinguishedName"); ds.PropertiesToLoad.Add("pwdLastSet"); ds.PageSize = 1; ds.ServerPageTimeLimit = TimeSpan.FromSeconds(2); ds.Filter = string.Format("(&(objectCategory=user)(sAMAccountName={0}))",userName); SearchResult sr = ds.FindOne(); hacked = DateTime.FromFileTime((long)sr.Properties["pwdLastSet"][0]); using (DirectoryEntry user = sr.GetDirectoryEntry()) { var value = user.Properties["pwdLastSet"][0] as ActiveDs.LargeInteger; var longValue = (((long)value.HighPart) << 32) + (long)value.LowPart; normal = DateTime.FromFileTime(longValue); } } return string.Format("{3} - Difference: {0:0.0} seconds. Established Method returns: {1}. Hacked method returns: {2}",hacked.Subtract(normal).TotalSeconds,normal,hacked,userName); } } 参考文献: > Active DS类型库 解决方法
你需要像这样翻译AD Long Integer,你不再需要ActiveDs了:
long pwdLastSet = CovertADSLargeIntegerToInt64(oUser.Properties["pwdLastSet"].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",null); return highPart * ((Int64)UInt32.MaxValue + 1) + lowPart; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读