问题标签 [directoryservices]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4121 浏览

c# - Active Directory 未在 C# 中找到所有用户

我有一些查询 Active Directory 以验证用户存在的代码。我正在尝试验证一长串大约 1300 个 id 的列表。我尝试了几种方法来验证用户帐户(LINQ to AD、DirectorySearcher(有和没有父 DirectoryEntry)以及链接到 WinNT:// 路径的 DirectoryEntry)。每次它都会回来说几个用户不存在。如果我在代码中硬编码他们的用户 ID 并单独执行,它会验证存在。如果我尝试在 foreach 循环中执行此操作,我会得到几个误报。

这是我现在正在使用的代码..

我得到假阴性的任何建议或原因?

0 投票
2 回答
8660 浏览

c# - System.DirectoryServices 很慢?

当用户登录网站时,我使用下面的代码在活动目录中查找信息。在本地域上运行非常快,但是通过 VPN 到远程受信任域上运行时非常慢(大约需要 7 或 8 秒)。从同一个机器运行 dsa.msc 到远程域几乎与在本地运行它一样快。

我正在使用属性过滤来检索尽可能少的数据量,那么在这种情况下 System.DirectoryServices 是否存在固有的缓慢问题,或者是否有人对如何提高性能有任何提示?

VPN 上的网络连接很好,只是这段代码运行缓慢。

0 投票
1 回答
6117 浏览

memory-leaks - System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity 的奇怪问题

我们正在编写一个系统,允许用户通过我们内部网上的 Web 应用程序更改他们的帐户密码。

起初,一切似乎都很顺利。在开发过程中,我们的测试帐户的密码可以毫无问题地更改。

然而,当我们使系统上线时,我们开始遇到问题。以下是症状:

  1. 起初,一切都很好。用户可以更改他们的密码。
  2. 在某些时候,UserPrincipal.FindByIdentity 中出现以下错误:“System.Runtime.InteropServices.COMException:身份验证机制未知。”
  3. 从那时起,尝试通过 Web 应用程序更改密码会导致错误:“System.Runtime.InteropServices.COMException:服务器无法运行。”
  4. 如果我手动回收应用程序池,一切似乎都会自行修复,直到开始发生更多错误......即,该过程在阶段 1 重新开始。

这是相关的代码片段:


关于为什么会发生这种情况的任何线索?谷歌搜索并没有发现任何真正有用的东西,MSDN 上的文档也没有。

0 投票
1 回答
28905 浏览

c# - 使用 DirectoryServices.AccountManagement 从 OU 获取组

我想使用 AccountManagement 列出组织单位中的所有组。

以下代码段适用于 DirectoryServices,但我必须在结果中使用 DirectoryEntry 路径实例化 GroupPrincipal(这感觉像是一个肮脏的修复)。

有人有想法吗?

谢谢!

0 投票
2 回答
2198 浏览

c# - 带有子结果的 LDAP 查询

我一直在用这个敲打我的头很长一段时间,但无法让它工作。我有一个 LDAP 查询,我确实在 AD 用户和计算机中工作,但不知道如何在 C# 中以编程方式进行。

这是我在 AD 工具中正常工作的 LDAP 查询:(memberOf=CN=AccRght,OU=Groups,OU=P,OU=Server,DC=mydomain,DC=com)(objectCategory=user)(objectClass=user) (l=城市)

我已使用此代码获取用户帐户以获取 CN=AccRght 的成员,但我没有成功限制属于特定城市的用户。

谢谢你的帮助!

0 投票
1 回答
818 浏览

c# - 通过 System.DirectoryServices 管理终端用户

我有一个环境,我需要经常将参数更改为用户登录到终端服务器时启动的程序。截至目前,我们打开计算机管理管理单元并为用户编辑环境选项卡,并在“登录时启动以下程序:”下手动更改参数。我想自动化这个过程。

我一直在研究 System.DirectoryServices 和 System.DirectoryServices.AccountManagement 并阅读所有我能读到的内容。到目前为止,我最好的猜测是我需要编辑的信息存储在“参数”属性中(属性可能最糟糕的名称,破坏谷歌搜索)。这种猜测的原因是当我列出我得到的所有属性时

CtxInitialProgram 和 CtxWorkDirectory 似乎与我正在使用的内容相关。

现在我被困住了,因为我无法弄清楚如何正确地读取和写入值来帮助我,或者找到资源来帮助我。

任何帮助将不胜感激。

编辑——我在互联网上的其他地方找到了这个答案在互联网上的其他地方问我找到了答案:

不幸的是,这些数据是以专有格式编码的。以编程方式管理它的唯一受支持的方法是使用终端服务附带的 IADsTSUserEx ADSI 接口。您基本上只需将 NativeObject 属性强制转换为该 COM 接口(在创建所需的 COM 引用之后),然后访问该接口公开的属性。

现在我的问题是如何设置 COM 引用,我以前从未做过类似的事情。

0 投票
5 回答
87967 浏览

c# - 如何确定用户帐户是启用还是禁用

我正在整理一个快速的 C# win forms 应用程序来帮助解决重复性的文书工作。

我已经在 AD 中搜索了所有用户帐户,并将它们添加到带有复选框的列表视图中。

我想默认 listviewitems 的默认检查状态取决于帐户的启用/禁用状态。

我正在努力寻找正确的属性来解析以从 DirectoryEntry 对象中获取帐户的状态。我搜索了AD 用户属性,但没有找到任何有用的东西。

任何人都可以提供任何指示吗?

0 投票
1 回答
421 浏览

c# - 无法快速响应 AD 检索

我正在开发一个 SharePoint 应用程序,它需要来自指定 Windows Server 2003 Active Directory 组织单位的用户。

首先,我不关心 DirectoryServices 对象上的“Dispose”和“Close”操作。在这一点上,检索操作快速而成功。

但这在 2ish 尝试后导致“服务器无法运行”错误。而这个错误会使整个应用程序运行得更糟,就像停止其他 AD 操作一样。

然后,我通过在每个 DirectoryEntry、DirectorySearcher 和 SearchResultCollection 对象上添加 using 语句来纠正此错误。

然后我达到了一个点,我不再收到“服务器无法运行”错误。但是,当我尝试使用 DirectorySearcher.FindAll 方法从 AD 检索用户 1 次或更多次时,第一个操作快速且成功,其他操作更慢但成功。它有点需要超时的持续时间。你能帮我解决一下这个减速的情况吗?

这是示例代码:

提前致谢

0 投票
3 回答
1715 浏览

c# - 使用 C# 针对 Active Directory 进行身份验证

我只有一个用户名,没有任何密码。我只想检查此用户名是否存在于Active Directory中。我该怎么做?

0 投票
2 回答
550 浏览

.net - System.DirectoryServices.AccountManagement.GroupPrincipal 线程安全吗?

我正在编写一个将批量创建用户的程序,我有一个操作是创建过程的一部分,它会阻塞大约 5 秒,为了解决这个问题,我打算让它成为线程并将所有东西都放在线程池中。

我的问题是,如果我在线程之外创建原则并将组原则传递给线程并调用group.Members.Add(u)group.Save()我会遇到麻烦吗?从每个线程内部生成一个新的组主体会更好吗?