我有一些代码正在从机器上的本地组查找组成员资格。对于每个成员,它都会尝试加载一些关于用户的信息(例如,找到一个组并获取其每个成员的名称)。查找用户信息时引发意外的异常
代码:
using (DirectoryEntry machine = new DirectoryEntry("WinNT://" + Environment.MachineName + ", Computer"))
{
using (DirectoryEntry group = machine.Children.Find(groupName, "group"))
{
object members = group.Invoke("members", null);
foreach (object groupMember in (IEnumerable) members)
{
using (DirectoryEntry member = new DirectoryEntry(groupMember))
{
member.RefreshCache();
string name = member.Name;
// <code snipped>
}
}
}
}
的代码工作正常的大部分时间,但对于一些小组成员,它抛出一个FileNotFoundException
当RefreshCache()
方法时抛出:
System.IO.FileNotFoundException:
The filename, directory name, or volume label syntax is incorrect.
(Exception from HRESULT: 0x8007007B)
at System.DirectoryServices.Interop.UnsafeNativeMethods.IAds.GetInfo()
at System.DirectoryServices.DirectoryEntry.RefreshCache()
at GroupLookup.GetLocalGroupMembership(String groupName)
是什么原因造成FileNotFoundException
(以及它正在查找的文件)?
一个非常短的稻草来抓住,但有问题的组成员有一个“&”在他们的名字? 如果不是,您可以发布一些导致问题的示例组成员名称吗? – 2010-07-22 10:55:28
@尼尔:不,他们没有。错误发生在客户现场,我已经问过这个问题。他们向我保证,会员名称只包含字母。 – adrianbanks 2010-07-22 12:03:33
是否有这个系统正在工作? – 2010-07-22 12:41:25