У меня есть код, который ищет членство в группах из локальных групп на машине. Для каждого участника он пытается загрузить некоторую информацию о пользователе (например, найти группу и получить имена каждого из ее членов).Неожиданное исключение, возникающее при поиске информации пользователя
Код:
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
(и какой файл он ищет)?
Очень короткая солома для сцепления, но имеют ли члены группы, у которых есть «&» на их имя? Если нет, можете ли вы разместить несколько имен членов группы образцов, которые вызывают проблему? –
@Neil: нет, они этого не делают. Ошибка происходит на сайте клиента, и я уже задал этот вопрос. Они заверяют меня, что имена участников содержат только буквы. – adrianbanks
Существуют ли системы, для которых это работает? –