问题标签 [groupprincipal]

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 投票
2 回答
550 浏览

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

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

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

0 投票
1 回答
1875 浏览

c# - GroupPrincipal 重命名组

我正在尝试重命名一个组。我的代码如下所示

问题是它崩溃group.DisplayName = "NewGroupName";并抛出异常

属性对此商店类型无效。

如果我注释掉该行,代码将继续运行,但我想更改显示名称。我做了一些研究,发现了这一点。但是我使用的是框架 4.0。有谁知道另一个该怎么做,或者我会以错误的方式解决这个问题?

0 投票
1 回答
3065 浏览

.net - 我真的需要在每个 Principal 上调用 Dispose() 吗?

我正在使用 .NET 的System.DirectoryServices.AccountManagement命名空间做一些 Active Directory 工作。我注意到Principalimplements IDisposable,这会引起一些头痛,因为该名称空间中的所有内容都继承了Principal

例如,考虑以下代码来获取组中的所有用户:

该片段中的每个类型都实现IDisposable了 ,包括搜索返回的所有用户和搜索结果集本身。

处理domainandgroup对象并不是什么大问题(使用块很容易using()),但是我该怎么处理每个结果呢?我真的必须遍历该users集合并处理每一个吗?

0 投票
2 回答
5447 浏览

c#-4.0 - GroupPrincipal 抛出“System.Runtime.InteropServices.COMException (0x8007200A):指定的目录服务属性或值不存在。”

System.DirectoryServices.AccountManagement用来查询用户,然后找到该用户的组。

我可以抓取底层DirectoryEntry对象并转储其属性和值,但是一旦GroupPrincipal.DisplayName访问该属性(或与此相关的任何属性),它就会引发以下异常:

"System.Runtime.InteropServices.COMException (0x8007200A):指定的目录服务属性或值不存在。\r\n\r\n 在 System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)\r\n 在 System。 DirectoryServices.DirectoryEntry.Bind()\r\n 在 System.DirectoryServices.DirectoryEntry.get_SchemaEntry()\r\n 在 System.DirectoryServices.AccountManagement.ADStoreCtx.IsContainer(DirectoryEntry de)\r\n 在 System.DirectoryServices.AccountManagement。 ADStoreCtx..ctor(DirectoryEntry ctxBase, Boolean ownCtxBase, String username, String password, ContextOptions options)\r\n 在 System.DirectoryServices.AccountManagement.PrincipalContext.CreateContextFromDirectoryEntry(DirectoryEntry entry)\r\n 在 System.DirectoryServices.AccountManagement.PrincipalContext .DoLDAPDirectoryInitNoContainer()\r\n 在 System.DirectoryServices.AccountManagement.PrincipalContext.DoDomainInit()\r\n 在 System.DirectoryServices.AccountManagement.PrincipalContext.Initialize()\r\n 在 System.DirectoryServices.Account Management.PrincipalContext.get_QueryCtx ()\r\n 在 System.DirectoryServices.AccountManagement.Principal.HandleGet[T](T& currentValue, String name, LoadState& state)\r\n 在 System.DirectoryServices.AccountManagement.Principal.get_DisplayName()\r\n 在ConsoleApplication9.Program.Main(String[] args)"AccountManagement.Principal.HandleGet[T](T& currentValue, String name, LoadState& state)\r\n 在 System.DirectoryServices.AccountManagement.Principal.get_DisplayName()\r\n 在 ConsoleApplication9.Program.Main(String[] args) "AccountManagement.Principal.HandleGet[T](T& currentValue, String name, LoadState& state)\r\n 在 System.DirectoryServices.AccountManagement.Principal.get_DisplayName()\r\n 在 ConsoleApplication9.Program.Main(String[] args) "

为什么我可以转储底层的原始属性,DirectoryEntry但不能直接调用任何属性GroupPrincipal?什么会导致这个异常?请注意,这不会发生在“域用户”组上,而是发生在后续组上,它确实......

0 投票
1 回答
4636 浏览

asp.net - 如何获取当前用户主体

我想使用 Windows 身份验证并获取用户信息,例如 Givenname、Surname 等。我UserPrincipal.Current在 IIS 中使用过,但出现异常,但 IIS express 看起来不错。

0 投票
2 回答
4005 浏览

c# - 扩展 UserPrincipal 类

我对 UserPrincipal 类进行了扩展以检索我需要的一些缺失的属性:

然后,我可以像这样轻松搜索:

所以,我的新任务和我当前的问题是:对于 ActiveDirectory 中搜索到的组,有必要使用扩展类获取用户列表。

我怎样才能实现目标?

作为解决方法,我已经创建了一个函数来检索属性:

先感谢您。

0 投票
1 回答
107 浏览

principalcontext - GetMembers(true) 不列出成员组的所有用户

首先这是我的代码:

我的“otheradmingroup”的唯一成员是“Domain Admins”组,其中包含 6 个广告用户。

执行上述代码后,返回的列表仅包含我的“域管理员”的前 4 个成员

0 投票
2 回答
1750 浏览

c# - 从不同域 C# 将用户添加到 AD 通用组

我们在同一个林中有许多域(即 sw.main.company.com、nw.main.company.com、main.company.com),我可以控制 sw.main.company.com 中的一个 OU设置通用 Active Directory 组。

在默认 AD 端口上使用 System.DirectoryServices.AccountManagement .NET 4.5 等将“sw”域用户添加到组中没有困难(c#),但是当涉及到从其他域(nw、mw、等),我在设置新的 PrincipalContext(ContextType.Domain "sw.main. company.com:3268", "DC=main,DC=company,DC=com")。

所有域控制器也是全局目录服务器,调用端口 3268 允许来自其他域的用户正确解析,但我无法使用 GlobalPrincipal.Save() 命令提交添加而不抛出错误。

我在下面包含了相关代码以及详细的错误堆栈。我需要这方面的帮助。

System.InvalidOperationException 未处理HResult=-2146233079 Message=服务器不愿意处理请求。Source = System.DirectoryServices.AccountManagement StackTrace:在 System.DirectoryServices.AccountManagement.ADStoreCtx.UpdateGroupMembership(主体组,DirectoryEntry de,NetCred 凭据,AuthenticationTypes authTypes)在 System.DirectoryServices.AccountManagement.SDSUtils.ApplyChangesToDirectory(主体 p,StoreCtx storeCtx,GroupMembershipUpdater updateGroupMembership、NetCred 凭据、AuthenticationTypes authTypes) 在 System.DirectoryServices.AccountManagement.ADStoreCtx.Update(Principal p) 在 System.DirectoryServices.AccountManagement.Principal.Save() 在 ExampleUsers.SyncAD.AddUserToGroup(String userId, String groupName) 在 c: \SourceControl\ExampleUsers\ExampleUsers\SyncAD.cs:ExampleUsers.SyncAD.SyncADUsers() 中的第 33 行:\SourceControl\ExampleUsers\ExampleUsers\SyncAD.cs:ExampleUsers.Program 中的第 18 行。Main(String[] args) in c:\SourceControl\ExampleUsers\ExampleUsers\Program.cs:System.AppDomain._nExecuteAssembly(RuntimeAssembly 程序集,String[] args) 中的第 62 行 System.AppDomain.ExecuteAssembly(String assemblyFile,证据 assemblySecurity , String[] args) 在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 在 System.Threading.ThreadHelper.ThreadStart_Context(Object state) 在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx ) 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 在 System.Threading.ThreadHelper 的 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)。ThreadStart() InnerException: System.DirectoryServices.DirectoryServicesCOMExceptionHResult=-2147016651 Message=服务器不愿意处理请求。Source=System.DirectoryServices ErrorCode=-2147016651 ExtendedError=8245 ExtendedErrorMessage=00002035:LdapErr:DSID-0C090B3E,注释:不允许通过 GC 端口操作,数据 0,v1db1 StackTrace:在 System.DirectoryServices.DirectoryEntry.CommitChanges() 在系统。 DirectoryServices.AccountManagement.ADStoreCtx.UpdateGroupMembership(主体组,DirectoryEntry de,NetCred 凭据,AuthenticationTypes authTypes)InnerException:

0 投票
2 回答
1668 浏览

c# - GroupPrinciple.FindbyIdentity 太慢了

我创建了一个函数,可以一次将一个用户添加到特定组(管理员等),但响应 GroupPrinciple(5-10 秒)和 group.members.add(5-10 秒)调用似乎需要很长时间并减慢我的应用程序,响应需要将近 15-20 秒,有没有更快的方法来做到这一点?

0 投票
0 回答
79 浏览

c# - 无法使用 PrincipalContext 检索 Active Directory 中的一个特定组用户

获取异常

system.directoryservices.accountmanagement.principaloperationexception :服务器上没有这样的对象

试图让一个组的所有成员。仅获得一个特定组的例外,能够获得具有相同代码的其他组的成员。

我正在尝试以下代码

该组包含600名成员,部分成员是跨域用户