我正在尝试使用UserPrincipal的GetGroups方法。如果用户帐户位于包含正斜杠的OU中,则对GetGroups的调用将失败,并出现COM未知错误0x80005000。找到该用户帐户只是找到,我可以访问其他属性。如果我在OU名称中删除了斜杠,则一切正常。我找到了一个在名称中转义斜杠的引用,但该引用包装在GetGroups方法下。我还发现确保使用已完成的PrincipalContext(ContextType,String)构造函数。我还尝试过将FQDN与转义的斜杠一起使用,并获得相同的结果。我在C#下面有一些示例代码:我正在使用Visual Studio2012。该代码在Windows 10 Enterprise x64上运行。.net目标版本为4.5using System;using System.Linq;using System.DirectoryServices.AccountManagement;string SamAccountName = "user1";//The OUs the user is in://Broken OU: "OU=Test / Test,DC=contoso,DC=com"//Working OU: "OU=Test & Test,DC=contoso,DC=com"PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, Environment.UserDomainName);UserPrincipal user = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, SamAccountName);//The user was found so this worksConsole.WriteLine("User Found: {0}", user.DistinguishedName);//This causes COM Exception: Unknown Error 0x80005000 string output = string.Join(Environment.NewLine, user.GetGroups().Select(x => x.Name).ToArray());Console.WriteLine(output);最终,我只用OU名称替换了这些特殊字符中的任何一种,因为到目前为止这是最简单的解决方案。我主要是对确保所编写的代码不会在将来爆炸而感到好奇。
1 回答
- 1 回答
- 0 关注
- 149 浏览
添加回答
举报
0/150
提交
取消