我有一些代碼正在從機器上的本地組查找組成員資格。對於每個成員,它都會嘗試加載一些關於用戶的信息(例如,找到一個組並獲取其每個成員的名稱)。查找用戶信息時引發意外的異常
代碼:
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