C#获取模糊的Active Directory属性
我正在尝试检索一些obsure 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
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:)