Active Directory - 检查密码是否永不过期?
Visual Basic 中有没有办法检查 Active Directory 中的用户密码是否设置为永不过期?
我找到了一种方法来查找最后更改的日期,但我找不到其他可用的选项。
Dim de As DirectoryServices.DirectoryEntry = GetUser(uDetails.username)
Dim objUser = GetObject(de.Path)
If objUser.PasswordLastChanged < DateTime.Now.AddMonths(-3) Then
...
在哪里可以找到所有可用 objUser
属性的列表?
Is there a way in Visual Basic to check if the user's password is set to never expire in Active Directory?
I've found a way to find the last date it was changed, but I can't find the other available options.
Dim de As DirectoryServices.DirectoryEntry = GetUser(uDetails.username)
Dim objUser = GetObject(de.Path)
If objUser.PasswordLastChanged < DateTime.Now.AddMonths(-3) Then
...
Where can I find a list of all available objUser
properties?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您使用的是 .NET 3.5 及更高版本,则应查看 System.DirectoryServices.AccountManagement (S.DS.AM) 命名空间。在这里阅读所有相关内容:
基本上,您可以定义域上下文并轻松查找 AD 中的用户和/或组:
新的 S.DS.AM 使在 AD 中使用用户和组变得非常容易!
If you're on .NET 3.5 and up, you should check out the
System.DirectoryServices.AccountManagement
(S.DS.AM) namespace. Read all about it here:Basically, you can define a domain context and easily find users and/or groups in AD:
The new S.DS.AM makes it really easy to play around with users and groups in AD!
对于.NET 2.0,您可以使用一些LDAP。神奇的部分是
userAccountControl:1.2.840.113556.1.4.803:=65536
。第一部分是要搜索的属性,第二部分表示“按位 AND”,第三部分是要检查的按位标志,在本例中是第 17 位。您可以在 如何使用按位过滤器。在下面的代码中,使用您的域控制器(DC ) 和 FQDN。
For .NET 2.0 you can use some LDAP. The magic part is
userAccountControl:1.2.840.113556.1.4.803:=65536
. The first part is the property that you want to search, the second means "bitwise AND" and the third is the bitwise flag to check, in this case the 17th bit. You can see more on the bitwise AND and OR in Active Directory in How to query Active Directory by using a bitwise filter.In the code below update the
SearchRoot
variable with your domain controller (DC) and FQDN.您可以使用最初来自 此处,我从 C# 翻译而来,并根据您的问题进行了一些修改(添加了 getter):
您必须添加对
System.DirectoryServices
。我已经在带有 .NET Framework 4 的 Windows Server 2008 上对其进行了测试(它也应该在 2.0 下工作),没有 Active Directory< /a>.但您自己检查一下,并随意扩展它以获取/设置其他属性或连接到其他计算机(SomeDomain/OtherComputerName
而不是Environment.MachineName
)。You could use the following code originally from here that I've translated from C# and modified a little bit according to your question (added a getter):
You have to add a reference to
System.DirectoryServices
. I have tested it on Windows Server 2008 with .NET Framework 4 (it should also work under 2.0) without Active Directory. But check it out yourself and feel free to extend it to get/set other properties as well or connect to other machines (SomeDomain/OtherComputerName
instead ofEnvironment.MachineName
).