VB.NET查询Active Directory用户时如何指定管理员账号密码
Active Directory 查询添加管理员凭据的实现方法
你可以直接使用PrincipalContext类的带身份凭据的重载构造方法,传入管理员的用户名和密码即可,不用修改其他查询逻辑。
两种场景的修改方式
- 不指定OU搜索容器的场景
原构造代码:
Using context = New PrincipalContext(ContextType.Domain, domain)
修改为带凭据的版本:
' adminUsername 支持 域\用户名 或 用户名@域名 两种格式 Using context = New PrincipalContext(ContextType.Domain, domain, adminUsername, adminPassword)
- 指定OU搜索容器的场景
原构造代码:
Using context = New PrincipalContext(ContextType.Domain, domain, OU)
修改为带凭据的版本:
Using context = New PrincipalContext(ContextType.Domain, domain, OU, adminUsername, adminPassword)
完整修改后的代码示例
Public Sub UserList(domain As String, adminUsername As String, adminPassword As String) Try ' 传入管理员凭据初始化上下文 Using context = New PrincipalContext(ContextType.Domain, domain, adminUsername, adminPassword) Dim userPrin As New UserPrincipal(context) With {.Enabled = True} Using searcher = New PrincipalSearcher(New UserPrincipal(context)) searcher.QueryFilter = userPrin For Each result In searcher.FindAll() Dim de As DirectoryEntry = TryCast(result.GetUnderlyingObject(), DirectoryEntry) Dim dn1 As String = de.Properties("cn").Value DataGridView1.Rows.Add(dn1) Next result End Using End Using Catch ex As Exception MsgBox(ex.Message) End Try End Sub
注意事项
- 不要在代码里硬编码管理员账号密码,生产环境建议使用加密配置存储,或者运行时让用户手动输入凭据,避免权限泄露。
内容的提问来源于stack exchange,提问作者Lider13
相关产品推荐
相关产品推荐

