首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EWS文件夹权限

EWS文件夹权限
EN

Stack Overflow用户
提问于 2014-01-23 13:43:28
回答 2查看 2.9K关注 0票数 0

我想列出每个Outlook文件夹的权限。我可以添加权限,但我的代码删除所有旧权限并设置新权限。

这是我添加权限的代码:

代码语言:javascript
复制
private void updateFolderPermission(Folder folder, String mail, int per)
{
  UserId delegateUser = new UserId(mail);
  FolderPermission permission = new FolderPermission(delegateUser, FolderPermissionLevel.None);

  switch (per)
  {
    case 0:
      {
        permission = new FolderPermission(delegateUser, FolderPermissionLevel.Owner);
        break;
      }
    case 1:
      {
        permission = new FolderPermission(delegateUser, FolderPermissionLevel.PublishingEditor);
        break;
      }
    case 2:
      {
        permission = new FolderPermission(delegateUser, FolderPermissionLevel.Editor);
        break;
      }
    case 3:
      {
        permission = new FolderPermission(delegateUser, FolderPermissionLevel.PublishingAuthor);
        break;
      }
    case 4:
      {
        permission = new FolderPermission(delegateUser, FolderPermissionLevel.Author);
        break;
      }
    case 5:
      {
        permission = new FolderPermission(delegateUser, FolderPermissionLevel.NoneditingAuthor);
        break;
      }
    case 6:
      {
        permission = new FolderPermission(delegateUser, FolderPermissionLevel.Reviewer);
        break;
      }
    case 7:
      {
        permission = new FolderPermission(delegateUser, FolderPermissionLevel.Contributor);
        break;
      }
    case 8:
      {
        permission = new FolderPermission(delegateUser, FolderPermissionLevel.None);
        break;
      }
  }      
  folder.Permissions.Add(permission);
  folder.Update();
}

我调试了代码,但是函数_permissions_向我显示了_count = 0_

我现在的问题是:-如何向现有的permissionSet添加权限?-如何列出该文件夹的所有权限?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-04 05:44:50

图维-

若要列出文件夹上的权限,请创建包含FolderSchema.Permissions的属性集,然后使用该属性集绑定到该文件夹:

代码语言:javascript
复制
PropertySet propSet = new PropertySet(BasePropertySet.FirstClassProperties, FolderSchema.Permissions);
Folder folder = Folder.Bind(service, folderid, propSet);

要向现有权限集添加权限,我让它工作的方式(以及这里推荐的内容:这里:http://social.msdn.microsoft.com/Forums/exchange/en-US/96da6ca5-9756-4f15-a57c-6a2962820727/ews-get-read-folder-permissions?forum=exchangesvrdevelopment)是删除当前与用户关联的权限,然后将新权限添加回。如果不这样做,只需添加新的perms,就会在DACL中复制用户id的错误。因此,下面的代码删除旧perms并添加新perms (PublishingAuthor)。

代码语言:javascript
复制
       PropertySet propSet = new PropertySet(BasePropertySet.FirstClassProperties, FolderSchema.Permissions);
       Folder folder = Folder.Bind(service, folderid, propSet);

       if (folder.Permissions.Count != 0)
        {
            for (int t = 0; t < folder.Permissions.Count; t++)
            {
                // Find any permissions associated with the specified user and remove them from the DACL
                if (folder.Permissions[t].UserId.DisplayName != null || folder.Permissions[t].UserId.PrimarySmtpAddress != null)
                {
                    folder.Permissions.Remove(folder.Permissions[t]);
                }
            }
        }

        //Now add the new permissions to the DACL 
        FolderPermission fldperm = new FolderPermission("sadied@contoso.onmicrosoft.com", FolderPermissionLevel.PublishingAuthor);
        folder.Permissions.Add(fldperm);
        folder.Update(); 

希望这能帮上忙!如果是这样的话,请不要忘记将这个答案标记为已被接受。

票数 0
EN

Stack Overflow用户

发布于 2014-02-06 12:19:19

代码语言:javascript
复制
private void updateFolderPermission(Folder folder, String mail, int per)
{
  UserId delegateUser = new UserId(mail);
  FolderPermission permission = new FolderPermission(delegateUser, FolderPermissionLevel.None);

  switch (per)
  {
    case 0:
      {
        permission = new FolderPermission(delegateUser, FolderPermissionLevel.Owner);
        break;
      }
    case 1:
      {
        permission = new FolderPermission(delegateUser, FolderPermissionLevel.PublishingEditor);
        break;
      }
    case 2:
      {
        permission = new FolderPermission(delegateUser, FolderPermissionLevel.Editor);
        break;
      }
    case 3:
      {
        permission = new FolderPermission(delegateUser, FolderPermissionLevel.PublishingAuthor);
        break;
      }
    case 4:
      {
        permission = new FolderPermission(delegateUser, FolderPermissionLevel.Author);
        break;
      }
    case 5:
      {
        permission = new FolderPermission(delegateUser, FolderPermissionLevel.NoneditingAuthor);
        break;
      }
    case 6:
      {
        permission = new FolderPermission(delegateUser, FolderPermissionLevel.Reviewer);
        break;
      }
    case 7:
      {
        permission = new FolderPermission(delegateUser, FolderPermissionLevel.Contributor);
        break;
      }
    case 8:
      {
        permission = new FolderPermission(delegateUser, FolderPermissionLevel.None);
        break;
      }
  }

  Folder myFolder = Folder.Bind(this.service, folder.Id);
  FolderPermissionCollection fpc = myFolder.Permissions;

  folder.Permissions.Add(permission);

  foreach (FolderPermission fp in fpc)
  {
    if (fp.UserId.DisplayName != null)
    {
      //folder.Permissions.Add(oldPer);
      if (fp.UserId.PrimarySmtpAddress != mail)
      {
        oldUser = new UserId(fp.UserId.PrimarySmtpAddress);
        oldPer = new FolderPermission(oldUser, fp.PermissionLevel);

        folder.Permissions.Add(oldPer);
      }
    }
  }

  try
  {
    folder.Update();
  }
  catch (Exception ex)
  {
    Console.WriteLine(ex.ToString());
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21309899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档