我读到密码哈希存储在 msPKIAccountCredentials 中,当我尝试读取密钥时,我得到 __ComObject 无法转换成任何东西。AdExplorer 显示数据类型是“ORName”,数据似乎是“二进制”形式。如何使用 c# 读取此属性?这不是唯一具有这种“数据类型”的属性。
public static void Main(string[] args){
System.DirectoryServices.DirectoryEntry d = new System.DirectoryServices.DirectoryEntry("LDAP://мой_лдап.loc", "логин", "пароль");
System.DirectoryServices.DirectorySearcher ds =
new System.DirectoryServices.DirectorySearcher(d, "(&(objectCategory=user)(mail=мой_емайл))");
if (ds.FindOne() != null) {
object x = ds.FindOne().GetDirectoryEntry().Properties["msPKIAccountCredentials"].Value;
object[] xx = (object[])x;
Type t = xx[0].GetType();
Console.WriteLine(xx[0].ToString());
// И всё.
}
}
我收到了答案 __ComObject 并且不可能以任何方式减去值。这里似乎描述了“数据类型”或架构http://docs.microsoft.com/en-us/windows/win32/adschema/s-object-or-name 。
哦,这个 microsoftware - 猜三下如何获得价值。经过在这方面的深思熟虑和经验 - 事实证明。这是一个“草稿”工作版本。
PS __ComObject 应该能够自动转换为所需的类,但是为此,您可能需要连接某种程序集(并且您需要确切知道是哪一个),如果它当然存在的话。但到目前为止,我还没有找到更简单的方法来解决这个问题,如果你找到了——写——我会接受更好的答案。
显示其他“语法”的问题也以类似的方式解决:DN-Binary DN-String OR-Name NT-Sec-Desc。