C#得到模糊的Active Directory属性

Max*_*r88 3 c# active-directory

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

  1. msexchmailboxsecuritydescriptor,和
  2. terminalservicesprofilepath(在userparameters中)

我很难找到他们两个.

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

DirectoryEntry deresult = result.GetDirectoryEntry();
byte[] bteMailACL =(byte[])deresult.Properties["msexchmailboxsecuritydescriptor"].Value; 
Run Code Online (Sandbox Code Playgroud)

它抱怨我不能将System .__ ComObject强制转换为System.Byte [],但我看到了几个使用类似上面代码的例子.

我如何理解这些信息?

Mav*_*rik 5

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

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

    byte[] btwMailACL = (byte[])deresult.Properties["msexchmailboxsecuritydescriptor"][0];
Run Code Online (Sandbox Code Playgroud)

解决你的问题.

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

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