C#得到模糊的Active Directory属性

时间:2011-06-07 08:34:33

标签: c# active-directory

我正在尝试检索一些令人沮丧的Active Directory属性:

  1. msexchmailboxsecuritydescriptor和
  2. terminalservicesprofilepath(在用户参数中)
  3. 我很难找到他们两个。

    例如,对于msexchmailboxsecuritydescriptor,如果我的代码类似于以下内容:

    DirectoryEntry deresult = result.GetDirectoryEntry();
    byte[] bteMailACL =(byte[])deresult.Properties["msexchmailboxsecuritydescriptor"].Value; 
    

    它抱怨我无法将System .__ ComObject强制转换为System.Byte [],但我看到了几个使用类似上述代码的示例。

    我如何理解这些信息?

1 个答案:

答案 0 :(得分:5)

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

只需将最后一个参数更改为:

    byte[] btwMailACL = (byte[])deresult.Properties["msexchmailboxsecuritydescriptor"][0];

解决您的问题。

编辑:对于生产代码,请记住这可以抛出NullReferenceException所以请在调用索引之前检查属性是否实际返回了值。

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