C # получить неясные атрибуты Active Directory - PullRequest
3 голосов
/ 07 июня 2011

Я пытаюсь получить некоторые атрибуты Active Directory:

  1. msexchmailboxsecuritydescriptor и
  2. Terminalservicesprofilepath (в параметрах пользователя)

У меня проблемы с тем, чтобы добраться до них обоих.

Например, для msexchmailboxsecuritydescriptor, если у меня есть код, подобный следующему:

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

Он жалуется, что не может привести System .__ ComObject к System.Byte [], но я видел несколько примеров, в которых используется код, аналогичный приведенному выше.

Как я понимаю эти сгустки информации?

1 Ответ

5 голосов
/ 07 июня 2011

Я думаю, что ваша проблема в .Value части утверждения.Не уверен, как это делали примеры, но я заметил, что всякий раз, когда я вызываю свойство AD таким образом, я всегда получаю массив, из которого получаю индекс 0 в случае отдельных элементов результата.

простоизменение последней характеристики на:

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

решает вашу проблему.

Редактировать: для производственного кода, пожалуйста, помните, что это может выдать NullReferenceException, поэтому проверьте, еслисвойство фактически вернуло значение перед вызовом индекса.

(протестировано на моей машине и работает как указано выше)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...