2013-11-13 2 views
2

Я пишу код, выполняющий задачи администрирования на сервере Exchange, и мне нужно установить разрешения для общей папки, предоставляя мне (то есть, почтовый ящик/пользователь, подключенный к Exchange) в данной папке.Извлечение объекта UserId текущего пользователя

Код для этого вдоль этих линий:

UserId userId = ???; 
myFolder.Permissions.Add(userId, FolderPermissionLevel.Owner); 
myFolder.Update(); 

Этот код будет работать нормально (и нет никаких проблем со мной, имеющие разрешения для предоставления себе права, так как я нахожусь в группе AD управления общими папками), но проблема в том, что у меня нет объекта UserId, который представляет текущего пользователя. У меня даже нет primarySmtpAddress, что является еще одним способом получить UserId. Все, что я знаю, это то, что я в контексте пользователя, имеющего разрешения на почтовый ящик, - это может быть текущий пользователь Windows, это может быть просто NetworkCredential, который был передан моей библиотеке.

Есть ли способ в EWS получить текущий пользователь или, по крайней мере, SMTP-адрес текущего пользователя? Я посмотрел в классе ExchangeService, но не смог найти ничего такого.

ответ

2

Если у вас есть NetworkCredential, вы можете привязываться к AD и использовать GetObject для получения IADsUser. Оттуда вы можете получить адрес электронной почты. Затем вы можете использовать:

UserIdType user = new UserIdType(); user.PrimarySmtpAddress = "[email protected]";

, чтобы установить PermissionSet идентификатор пользователя:

http://msdn.microsoft.com/en-us/library/bb856574(v=exchg.80).aspx

Смежные вопросы