J'ai du code qui recherche des appartenances à des groupes locaux sur une machine. Pour chaque membre, il essaie de charger des informations sur l'utilisateur (par exemple, trouver un groupe et obtenir le nom de chacun de ses membres).Exception inattendue levée lors de la recherche d'informations utilisateur
Le code:
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>
}
}
}
}
Le code fonctionne bien la plupart du temps, mais pour certains membres du groupe, il jette un FileNotFoundException
lorsque la méthode RefreshCache()
est jeté:
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)
Ce qui est à l'origine le FileNotFoundException
(et quel est le fichier recherché)?
Une paille très courte à saisir, mais les membres du groupe en question ont-ils un "&" dans leur nom? Sinon, pouvez-vous poster des exemples de noms de membres de groupe qui causent le problème? –
@Neil: non, ils ne le font pas. L'erreur se produit sur un site client et j'avais déjà posé cette question. Ils m'assurent que les noms des membres ne contiennent que des lettres. – adrianbanks
Y a-t-il des systèmes pour lesquels cela fonctionne? –