我正在尝试检索一些令人沮丧的Active Directory属性:
我很难找到他们两个。
例如,对于msexchmailboxsecuritydescriptor,如果我的代码类似于以下内容:
DirectoryEntry deresult = result.GetDirectoryEntry();
byte[] bteMailACL =(byte[])deresult.Properties["msexchmailboxsecuritydescriptor"].Value;
它抱怨我无法将System .__ ComObject强制转换为System.Byte [],但我看到了几个使用类似上述代码的示例。
我如何理解这些信息?
答案 0 :(得分:5)
我认为你的问题出现在声明的.Value
部分。不确定示例是如何做的但是我注意到每当我调用这样的AD属性时,我总是得到一个数组,在单个结果项的情况下我得到索引0。
只需将最后一个参数更改为:
byte[] btwMailACL = (byte[])deresult.Properties["msexchmailboxsecuritydescriptor"][0];
解决您的问题。
编辑:对于生产代码,请记住这可以抛出NullReferenceException
所以请在调用索引之前检查属性是否实际返回了值。
(在我的机器上测试并按上述方式工作)