问题标签 [principalsearcher]

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 回答
4214 浏览

c# - 使用 PrincipalSearcher 进行复杂搜索过滤

我正在SamAccountName使用该对象在 Active Directory 中搜索特定值,PrincipalSearcher因为我想返回UserPrincipal's. 我想知道如何将两个过滤器应用于该搜索;一个是帐户名的开头以xx开头,另一个是它不以_c结尾。

目前我可以使用 xx 搜索所有以 xx 开头的结果,xx*但我不知道如何添加另一个搜索词,甚至不知道如何应用搜索词不等于。这就是我目前正在使用的。

我在想的是我需要向 中添加另一个参数searchTemplate.SamAccountName,我只是不确定如何。

更新: 我正在与Reddit上的某个人交谈,他给了我一些有用的建议,但这个用户已经黑了。似乎最常见的建议是以某种方式实现 LDAP 过滤器。因此,如果有人知道如何在返回主体对象的同时实现这些,那将非常有帮助。

0 投票
1 回答
341 浏览

c# - 查找是否使用电子邮件启用/禁用了 Active Directory

我试图通过搜索用户的电子邮件地址并检查 Enabled 属性来查找用户是否拥有 Active Directory 帐户(如果我返回 Enabled 作为 true - 运行代码,如果我返回 false - 运行其他代码,如果结果是null - 返回 false,因为该电子邮件不再存在)。当我进入 foreach 循环时,它已经根据他们在result中的电子邮件找到了用户,但是使用 if 和 elses 进行检查会将用户返回为 NULL。

如果用户在 foreach 中启用或禁用,我缺少什么能够访问?

0 投票
1 回答
445 浏览

c# - 如果 SizeLimit 为 256 或更大,DirectorySearcher 不尊重 SizeLimit 属性

我正在使用PrincipalSearcherandDirectorySearcher来过滤用户并指定要获取的属性。在 2 个不同的网络上对其进行测试。一个网络有 8K+ 记录,另一个网络有 135K+。在 135K+ 网络上,它无法将记录保存到数据库。所以我想用少数几条记录做一个测试,但在我试过的几百条记录上它并没有失败。所以我试着把它增加到一千。但是当我这样做时,它给了我一切,而不是我要求的一千。

以下是我的做法:

注意这里的大小限制是 255。如果我指定一个低于 256 的值,它将返回我指定的 I 记录数。在小型网络上运行的快速示例:

在此处输入图像描述

如果我告诉它给我 255 条记录,它给我 255 条记录。但如果我告诉它给我 256 或更高,它想给我所有这些。

在此处输入图像描述

关于这里发生了什么的任何想法?

0 投票
1 回答
812 浏览

c# - PrincipalContext:异常详细信息:System.DirectoryServices.DirectoryServicesCOMException:发生操作错误

我正在尝试为用户搜索 AD,但它不断抛出异常。该应用程序设置为使用 AppPool。而且我确信登录的用户可以访问搜索广告。

代码:

堆栈跟踪:

源错误:

0 投票
1 回答
1135 浏览

c# - PrincipalSearcher 错误的用户名或密码错误

我正在尝试从活动目录中获取用户数据。认证过程是真的。

PrincipalSearcher返回错误的用户名或密码。

我怎么解决这个问题?

0 投票
1 回答
864 浏览

c# - ldap principalsearcher 非常慢

我想从 20,000 个用户中的 1 个用户那里获取信息。我在下面使用的方法的响应时间是 40 秒。这个问题的解决方案是什么?

0 投票
1 回答
113 浏览

c# - 如何找到 LastLogonTimestamp 小于某个日期或 null 的计算机

以下代码返回登录日期早于 3 个月前的所有计算机负责人,但没有获取 lastlogontimestamp 为 null 的所有计算机负责人

我怎样才能优雅地将那些具有空值“lastlogontimestamp”值的“计算机”添加到“计算机”中?

0 投票
2 回答
605 浏览

c# - 使用 ASP.NET WebAPI C# 获取 AD 组在 Windows Server 2016 Datacenter 上不起作用

我有一个 ASP.NET Web API 应用程序,它将包含 Active Directory 中的特定名称的所有组加载到内部数据库中。

这正在开发中。PC (Windows 10)、Testserver 和旧的 Productive Server (Windows Server 2012 R2) 但在新的 Productive Server (Windows 2016) 上,相同的方法遇到了异常。

尝试对已标记为删除的注册表项进行非法操作。

这里的代码:

附加信息: Windows Server 2016 Datacenter 版本 10.0.14393 Build 14393

安装 .NET Framework (Server 2016) .NET Framework 4.8 使用 .NET Framework 7

有人有一个想法,问题可能是什么?谢谢

添加:08.01.2020 16:11 (UTC +1)

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Runtime.InteropServices.COMException:尝试对已标记为删除的注册表项进行非法操作。

源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[COMException (0x800703fa): 试图对已标记为删除的注册表项进行非法操作。]
System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) +535 System.DirectoryServices.DirectoryEntry.Bind() +48
System.DirectoryServices.DirectoryEntry.get_AdsObject() +43
System.DirectoryServices.PropertyValueCollection.PopulateList() +27
System.DirectoryServices .PropertyValueCollection..ctor(DirectoryEntry entry, String propertyName) +122
System.DirectoryServices.PropertyCollection.get_Item(String propertyName) +168
System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) +194 System.DirectoryServices.DirectoryEntry.Bind() + 48
System.DirectoryServices.DirectoryEntry.get_AdsObject() +43
System.DirectoryServices.DirectorySearcher.FindAll(Boolean findMoreThanOne) +91
System.DirectoryServices.DirectorySearcher.FindOne() +46
FragranceStudio.Webservice.Common.Helper.ActiveDirectoryHelper.SetADInformationToFragranceStudioPrincipal(FragranceStudioPrincipal香水StudioPrincipal) 在 C:\Repositories\VS2017\FragranceStudio\FragranceStudio \FragranceStudio.Webservice.Common\Helper\ActiveDirectoryHelper.cs:70 FragranceStudio.Webservice.Common.Security.ExtendedPermissionProvider.ReloadInheritedPermissionGroups(FragranceStudioPrincipal principal) 在 C:\Repositories\VS2017\FragranceStudio\FragranceStudio\FragranceStudio.Webservice.Common.Security\ExtendedPermissionProvider .cs:142

[FragranceStudioException:发生未知错误。请重试或联系服务台。]
FragranceStudio.Webservice.Common.Security.ExtendedPermissionProvider.ReloadInheritedPermissionGroups(FragranceStudioPrincipal principal) 在 C:\Repositories\VS2017\FragranceStudio\FragranceStudio\FragranceStudio.Webservice.Common.Security\ExtendedPermissionProvider.cs:169 FragranceStudio.Webservice.Common.Security.ExtendedPermissionProvider。 C:\Repositories\VS2017\FragranceStudio\FragranceStudio\FragranceStudio.Webservice.Common.Security\ExtendedPermissionProvider.cs:62 FragranceStudio.Webservice.Common.DomainEntities.Security.FragranceStudioPrincipal..ctor(IExtendedPermissionProvider extendedPermissionProvider, WindowsPrincipal 主体中的 GetInheritedGroups(FragranceStudioPrincipal 主体) ) 在 C:\Repositories\VS2017\FragranceStudio\FragranceStudio\FragranceStudio.Webservice 中。Common\DomainEntities\Security\FragranceStudioPrincipal.cs:55 FragranceStudio.Webservice.WebApiApplication.Application_PostAuthenticateRequest(Object sender, EventArgs e) 在 C:\Repositories\VS2017\FragranceStudio\FragranceStudio\FragranceStudio.Webservice\Global.asax.cs:51 系统中。 Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +223 System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +220 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +94Execute() +223 System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +220 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +94Execute() +223 System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +220 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +94