当我对 BitLocker 恢复密钥执行目录搜索时,我似乎无法返回任何有意义的搜索结果。
DirectoryEntry entry = new DirectoryEntry("LDAP://OU=MYOU,DC=MYDC", adminUsername,
adminPassword);
entry.Username = AdminInformation.AdminUsername;
entry.Password = AdminInformation.AdminPassword;
DirectorySearcher search = new DirectorySearcher(entry);
search.PropertiesToLoad.Add("msFVE-RecoveryPassword");
search.Filter = $"(&(cn={chosenComputer}))";
foreach (SearchResult res in result)
{
textBoxBitLockerKey.Text = (res.Properties["msFVE-RecoveryPassword"][0].ToString());
}
基本上,我用包含 BitLocker 密钥的计算机填充了一个列表(我们的组织中只有使用 BitLocker 的笔记本电脑)。用户选择笔记本电脑后,相关的 BitLocker 密钥应填充到他们可以复制或打印的文本框中,但每次我尝试从选定的计算机中获取该密钥时,都会出现越界异常。我一直在使用 DirectorySearcher 来查找其他属性,例如用户帐户或计算机名称,但这给我带来了麻烦。我了解错误是什么,我只是不知道是什么原因造成的,而且我似乎找不到任何其他完全涵盖该主题的答案。任何输入表示赞赏。
这是一个例外:索引超出范围。必须是非负数且小于集合的大小。参数名称:索引。
经过进一步调查,目录搜索器似乎只搜索封装了 msFVE-RecoveryInformation 属性的属性。如果我尝试根据所选计算机名称添加过滤器,它将不会提供具有实际值的 SearchResult 属性。例如,如果我尝试基于“cn”设置过滤器,它会返回 BitLocker 密钥的 GUID。