Tag: userprincipal

使用PrincipalSearcher.FindAll()时内存泄漏

我也有使用插件和appdomains的长时间运行服务,并且由于使用目录服务而导致内存泄漏。 请注意,我使用的是system.directoryservices.accountmanagement,但我理解它使用相同的底层ADSI API,因此容易出现相同的内存泄漏。 我查看了所有CLR内存计数器,并且内存没有泄漏,并且都是在强制GC或卸载appdomain时返回的。 泄漏是私有字节,不断增长。 我在这里搜索并看到了一些与使用ADSI API时内存泄漏相关的问题,但它们似乎表明只需遍历directorysearcher即可解决问题。 但正如您在下面的代码中看到的那样,我在foreach块中执行此操作,但内存仍然被泄露。 有什么建议? 这是我的方法: public override void JustGronkIT() { using (log4net.ThreadContext.Stacks[“NDC”].Push(GetMyMethodName())) { Log.Info(“Inside ” + GetMyMethodName() + ” Method.”); System.Configuration.AppSettingsReader reader = new System.Configuration.AppSettingsReader(); //PrincipalContext AD = null; using (PrincipalContext AD = new PrincipalContext(ContextType.Domain, (string)reader.GetValue(“Domain”, typeof(string)))) { UserPrincipal u = new UserPrincipal(AD); u.Enabled = true; //u.Surname = “ju*”; using […]

使用PrincipalContext和ADLDS,LDAP服务器不可用

我们正在利用ADLDS进行用户管理和身份validation。 我们可以毫无问题地成功查询实例。 但是,如果未设置密码,尝试执行SetPassword等操作将失败甚至尝试创建新用户,则会失败。 我可以成功更新用户,只要它不是我想要更新的密码。 我一直在阅读很多与此相关的不同文章,但没有找到解决方案。 发帖看看我是否可以对这个问题有一些新的看法,感谢任何意见。 例 ContextType ctxType = ContextType.ApplicationDirectory; string server = “myadldsserver.com”; string usersCN = “CN=Users,…”; // container where users reside ContextOptions ctxOpts = ContextOptions.SimpleBind; string uname = “myuser”; string pswrd = “mypass”; using(var ctx = new PrincipalContext(ctxType, server, usersCN, ctxOpts, uname, pswrd) using(var newUser = new UserPrincipal(ctx)) { newUser.Name = “newusername”; […]

从UserPrincipal对象获取nETBIOSName

我正在使用.Net库的System.DirectoryServices.AccountManagement部分连接到ActiveDirectory。 在GroupPrincipal对象上调用GetMembers()并过滤结果后,我现在拥有了UserPrincipal对象的集合 GroupPrincipal myGroup; // population of this object omitted here foreach (UserPrincipal user in myGroup.GetMembers(false).OfType()) { Console.WriteLine(user.SamAccountName); } 上面的代码示例将打印出“TestUser1”之类的用户名。 我需要将这些与来自“DOMAIN \ TestUser1”格式的另一个应用程序的列表进行比较。 如何从UserPrincipal对象获取“DOMAIN”部分? 我不能只是附加一个已知的域名,因为涉及多个域,我需要区分DOMAIN1 \ TestUser1和DOMAIN2 \ TestUser2。

如何在具有多个树的AD林中的全局编录中搜索用户

我有以下带有两棵树的AD森林: 域1。 有两个子域Domain2和Domain3 Domain4。 没有子域名。 Domain1的DNS名称是domain1.local 。 Domain4的DNS名称是domain4.local 。 在每个域中都有一个启用了全局编录的域控制器。 我正在尝试通过其SID从域4获取UserPrincipal。 该程序从Domain2中的计算机运行。 我使用以下代码: // Running on some machine from Domain2 PrincipalContext context = new PrincipalContext( ContextType.Domain, “dc2.domain2.domain1.local:3268”, // Using Global Catalog port and local domain controller “DC=domain1, DC=local”, // I guess the problem is here “domain1\\super-admin”, // User has all necessary rights across all domains […]

确定用户是否在.NET 4.0应用程序的AD组中

我试图确定用户是否是内部ASP.NET 4.0应用程序的Active Directory(AD)组的成员。 在用户不是AD组成员的情况下,下面的代码在最后一行(return语句)上抛出“尝试访问已卸载的appdomain”exception错误。 public static bool IsInADGroup(string userName, string groupName) { var principalContext = new PrincipalContext(ContextType.Domain); UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(principalContext, userName); if (userPrincipal == null) return false; GroupPrincipal groupPrincipal = GroupPrincipal.FindByIdentity(principalContext, groupName); if (groupPrincipal == null) return false; return userPrincipal.IsMemberOf(groupPrincipal); } 有关如何修复或其他解决方法的任何想法?

获取给定UserPrincipal的组列表

我想获取用户所在的组列表。 这是我的代码: PrincipalContext ctx = new PrincipalContext(ContextType.Domain, “mydomain.ac.uk”, “DC=mydomain,DC=AC,DC=UK”, “user”, “password”); UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, “MyUser”); PrincipalSearchResult results = user.GetGroups(); foreach(Principal p in results) { Response.Write(p.Name); } 当我运行时,我在Response.Write(p.Name);行中收到以下错误Response.Write(p.Name); System.Runtime.InteropServices.COMException:指定的目录服务属性或值不存在。 当我检查结果的计数时,它返回9,第一组是DomainUsers 。 如何迭代列表中的所有9个组? 谢谢。 以下是我获得的用户列表:

如何获取列表本地Windows用户(仅显示在Windows登录屏幕中的用户)

如何获取本地Windows用户列表(仅显示在Windows登录屏幕中的用户) 我尝试了很多使用Windows Principle库和WMI Select命令的方法。 我一直得到管理员,访客和其他一些奇怪的帐户(VUSRNEIL-DELL,$ HOMEGROUPUSER,ASPNET ……等) 登录屏幕上不会显示这3个用户帐户。 如何区分这些用户类型? 我在C#中编码