c# - 从 C# 中的 Active Directory 获取用户
问题描述
我试图在ComboBox
控件中显示来自网络上 Active Directory 的用户。为此,我有下一个功能:
public static List<Usuario> MostrarUsuariosDominio()
{
List<Usuario> rst = new List<Usuario>();
try
{
DirectoryContext dc = new DirectoryContext(DirectoryContextType.Domain, Environment.UserDomainName);
Domain domain = Domain.GetDomain(dc);
DirectoryEntry de = domain.GetDirectoryEntry();
DirectorySearcher adSearcher = new DirectorySearcher(de);
adSearcher.Filter = "(&(objectClass=user)(objectCategory=person))";
adSearcher.PropertiesToLoad.Add("samaccountname");
SearchResult result;
SearchResultCollection iResult = adSearcher.FindAll();
Usuario item;
if (iResult != null)
{
for (int counter = 0; counter < iResult.Count; counter++)
{
result = iResult[counter];
if (result.Properties.Contains("samaccountname"))
{
item = new Usuario();
item.Nombre = (String)result.Properties["samaccountname"][0];
rst.Add(item);
}
}
}
adSearcher.Dispose();
}
catch (Exception ex)
{
Usuario item = new Usuario();
item.Nombre = "No se pudo recuperar la lista de usuarios";
rst.Add(item);
}
return rst;
}
如果我在域控制器的 PC 上运行应用程序,它工作正常:该函数将所有用户返回给我。但如果我在另一台 PC 上运行它,我会遇到异常:
指定的域不存在或无法与其联系
有什么方法可以从另一台 PC 恢复用户列表?
解决方案
这一行:
DirectoryContext dc = new DirectoryContext(DirectoryContextType.Domain, Environment.UserDomainName);
告诉它连接到当前用户登录的域。您是否以域用户身份登录?
也许检查什么Environment.UserDomainName
等于,看看它是否正确。
如果它是正确的,那么它可能是一个网络问题 - 它无法与域对话。你需要连接到VPN吗?
推荐阅读
- .net - Selenium .NET HtmlUnitDriver 无法连接到远程服务器
- android - Android Studio 重命名包 - Bitbucket 和 Git 管理
- google-apps-script - 从验证列表中删除已被选中的项目
- android - 在 Facebook 上共享项目,我在 Manifest.xml 文件中收到错误
- linux - 出现错误:将备份还原到 5.x Greenplum DB 时无法识别配置参数“gp_strict_xml_parse”
- mfc - 如何捕捉对话框的移动事件?
- javascript - Redux - mapDispatchToProps 不适用于注销功能
- lodash - 如何通过所有属性从对象数组中获取唯一对象?
- ibm-datapower - IBM APIC 2018.1 与 DataPower 7.5.2.0 连接
- angular - 无法将子组件导入父组件