public override void ItemAdded(SPItemEventProperties properties) { //用此方法模拟管理员账户运行此事件处理程序 SPSecurity.RunWithElevatedPrivileges(delegate() { //用此方法的话就不用dispose()了 using (SPSite site = new SPSite(properties.SiteId)) { //注意获得web的方法!!! using (SPWeb web = site.OpenWeb(properties.OpenWeb().ID)) { try { //获得触发事件的列表 SPList list = web.Lists[properties.ListId]; //获得触发事件的列表条目 SPListItem item = list.Items.GetItemById(properties.ListItemId); //将此条目取消权限继承,如果是“false”,则将去除所有权限,只保留系统账户, //如果是“true”,则将上一级权限复制过来。 if (!item.HasUniqueRoleAssignments) { item.BreakRoleInheritance(false); } //权限定义 SPRoleDefinition RoleDefinition = web.RoleDefinitions.GetByType(SPRoleType.Contributor); //获取用户所在组 string groupName = IsInGroup(web, properties.UserLoginName.Split(':')[1]); writetxt(groupName +"ab"); SPMember mem = web.SiteGroups[groupName]; SPPrincipal sp = (SPPrincipal)mem; SPRoleAssignment ra = new SPRoleAssignment(sp); //将此角色分配绑定权限级别 ra.RoleDefinitionBindings.Add(RoleDefinition); //将此新权限绑定到列表条目上 item.RoleAssignments.Add(ra); item.Update(); } catch (Exception ee) { writetxt(ee.ToString()); } } } } ); }//*********************************新浪微博 jasondct ***********************************