C#获取模糊的Active Directory属性

C#获取模糊的Active Directory属性,c#,active-directory,C#,Active Directory,我正在尝试检索一些obsure Active Directory属性: msexchmailboxsecuritydescriptor,以及 terminalservicesprofilepath(在用户参数中) 我很难找到他们两个 例如,对于msexchmailboxsecuritydescriptor,如果我有类似以下代码: DirectoryEntry deresult = result.GetDirectoryEntry(); byte[] bteMailACL =(byte[])der

我正在尝试检索一些obsure Active Directory属性:

  • msexchmailboxsecuritydescriptor,以及
  • terminalservicesprofilepath(在用户参数中)
  • 我很难找到他们两个

    例如,对于msexchmailboxsecuritydescriptor,如果我有类似以下代码:

    DirectoryEntry deresult = result.GetDirectoryEntry();
    byte[] bteMailACL =(byte[])deresult.Properties["msexchmailboxsecuritydescriptor"].Value; 
    
    它抱怨我无法将System.\u ComObject强制转换为System.Byte[],但我看到了几个使用类似于上面代码的示例


    我如何理解这些信息

    我认为你的问题出在语句的
    .Value
    部分。不确定示例是如何实现的,但我注意到,每当我调用这样的AD属性时,总是会得到一个数组,在单个结果项的情况下,该数组的索引为0

    只是将最后一个状态更改为:

        byte[] btwMailACL = (byte[])deresult.Properties["msexchmailboxsecuritydescriptor"][0];
    
    解决你的问题

    编辑:对于生产代码,请记住这可能引发
    NullReferenceException
    ,因此在调用索引之前,请检查属性是否实际返回了值


    (在我的机器上测试并按上述方式工作)

    +1。我也注意到了。某些属性通常返回多个值(例如列出广告组中成员的“成员”)。我猜出于一致性的原因,API的设计者决定所有的值都应该是一个数组,即使它们中的大多数只包含1项。我实际上喜欢这种设计(一旦我掌握了窍门),因为现在我可以在它上使用LINQ来完成我的大多数操作。谢谢你的+1:)