TuVi-
To list the permissions on the a folder, create a property set that includes FolderSchema.Permissions, then bind to the Folder with that property set:
PropertySet propSet = new PropertySet(BasePropertySet.FirstClassProperties, FolderSchema.Permissions);
Folder folder = Folder.Bind(service, folderid, propSet);
To add permissions to an existing permission set, the way I got it to work (and what was recommended here: here: http://social.msdn.microsoft.com/Forums/exchange/en-US/96da6ca5-9756-4f15-a57c-6a2962820727/ews-get-read-folder-permissions?forum=exchangesvrdevelopment) is to remove the permissions currently associated with the user, then add the new permission back in. If you don't do this, and you just try to add the new perms, you'll get an error about a duplicating the user id in the DACL. So the following code removes the old perms and adds new perms (PublishingAuthor).
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();
Hope that helps! And if it does, please don't forget to mark this answer as accepted.