gpt4 book ai didi

c# - 事件目录属性 "badPwdCount"

转载 作者:可可西里 更新时间:2023-11-01 11:31:21 24 4
gpt4 key购买 nike

问题:我们已经将 AD 服务器从 2003 年升级到 2008 年,由于一些“错误的代码”,开发人员以这样的方式编码,他直接将“badPwdCount”属性值转换为 INT 并且由于 NULL 值转换而爆炸 - NULL 引用异常 - NULL 无法转换为 INT。

更大的问题:我们目前无法进行部署,因为有超过 100 个单独的应用程序依赖于此更改,我们目前正在寻找一种涉及最少的方式来处理它。

背景:现在这个“badPwdCount”属性的工作方式是,当用户登录域时,它将被设置为零,否则为 NULL。问题是这些用户都不会交互式登录,因为他们是外部用户,我们通过 API 对他们进行身份验证,他们也无法使用 API 登录。

问题:有谁知道这个值是在注册表中还是在某个地方,我可以在哪里找到它并将其设置为零?还考虑通过脚本启动每个用户的登录,但也想收集其他想法...

badPwdCount 的 MSDN 页面: http://msdn.microsoft.com/en-us/library/windows/desktop/ms675244(v=vs.85).aspx

最佳答案

通常这很容易,您需要做的就是更新事件目录中的所有用户,如果该值为空,则将其设置为 0。您可以通过多种方式执行此操作,例如脚本或代码,或者批量更新工具。

在这种情况下,badPwdCount 是一个不被复制的特殊属性(即每个域 Controller 都不同),据我所知,没有办法手动或通过脚本更新它,但是,我认为我有一个解决方案。

对于每个域 Controller ,您应该能够轻松地为事件目录中的每个用户触发一次失败登录,从而导致值增加。

由于您使用 C# 标记了您的帖子,这里有一些 C# 代码可以为您解决问题:

using System.DirectoryServices.AccountManagement;
using System.DirectoryServices.ActiveDirectory;

...

using (Domain domain = Domain.GetComputerDomain())
{
foreach (DomainController domainController in domain.DomainControllers)
{
using (PrincipalContext context = new PrincipalContext(ContextType.Domain, domainController.Name))
using (UserPrincipal userPrincipal = new UserPrincipal(context))
using (PrincipalSearcher searcher = new PrincipalSearcher(userPrincipal))
using (PrincipalSearchResult<Principal> results = searcher.FindAll())
{
foreach (UserPrincipal user in results.OfType<UserPrincipal>())
{
context.ValidateCredentials(user.SamAccountName, "THEREISNOWAYTHISISTHECORRECTPASSWORD");
}
}
}
}

附言。如果这搞砸了您的广告,我对此概不负责!

关于c# - 事件目录属性 "badPwdCount",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19935175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com