关于Sharepoint 用户管理

本文介绍如何使用C#代码操作SharePoint站点的用户、用户组及角色分配,包括添加、删除用户,显示用户组和用户信息,以及为用户分配特定角色。
using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using System.DirectoryServices;
using System.Collections;

namespace DMS.Layouts
{
  public partial class CUsers : LayoutsPageBase
  {
  protected void Page_Load(object sender, EventArgs e)
  {
  SPSite site = new SPSite("http://localhost");
  SPWeb web = site.OpenWeb();
   
  SPUserCollection users = web.SiteUsers;
  SPGroupCollection groups = web.SiteGroups;
  //users.Add(@"HNOP\zhoujieming","abc@hnop.com","","");
  web.AllowUnsafeUpdates = true;
  users.Remove(@"HNOP\zhoujieming");
 Response.Write("<b>SharePoint用户组:</b><br>");
  foreach(SPGroup group in groups)
  {
  Response.Write(group.Name + "<br>");
  }
   
   
  Response.Write("<b>SharePoint用户:</b><br>");
  foreach (SPUser user in users)
  {
  Response.Write(user.LoginName+"<br>");
  }
//获取站内有有角色
  Response.Write("<b>SharePoint角色:</b><br>");
  for (int i = 0; i < web.RoleDefinitions.Count; i++)
  {
   
  Response.Write(web.RoleDefinitions[i].Name+"<br>");
  }
  SPUser guser = web.EnsureUser(@"CLASS-15\student2");
   
  SPRoleAssignment roleAssignment = new SPRoleAssignment(web.EnsureUser(@"CLASS-15\student2"));
  roleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions["SLK Learner"]);
  web.RoleAssignments.Add(roleAssignment);
  /*
  //获取域,域计算机
  using (DirectoryEntry root = new DirectoryEntry("WinNT:"))
  {
  foreach (DirectoryEntry domain in root.Children)
  {
  Response.Write("Domain | WorkGroup:\t" + domain.Name+"<br>");
  foreach (DirectoryEntry computer in domain.Children)
  {
  Response.Write("Computer:\t" + computer.Name + "<br>");
  }
  }
  }
  Response.Write("<b>本机用户:</b><br>");
 DirectoryEntry LAd = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");


 foreach (object member in (IEnumerable)LAd.Invoke("Members"))
 {

  DirectoryEntry dirmem = new DirectoryEntry(member);
  Response.Write(dirmem.Name + "<br>");
 }



  Response.Write("<b>HOPN域用户:</b>");
  DirectoryEntry de = new DirectoryEntry();

  de.Path = "LDAP://CLASS-15/CN=Users,=DCgaochun,DC=jsmstc";
  de.Username = @"LASS-15\Administrator";
  de.Password = "password";

  //通过搜索查出所有的人员
  SearchResultCollection results;
  DirectorySearcher srch = new DirectorySearcher(de);
  srch.Filter = "(&(&(objectCategory=person)(objectClass=user)))";
  results = srch.FindAll();

  foreach (SearchResult sr in results)
  {
  DirectoryEntry objDE = sr.GetDirectoryEntry();
  string userName = objDE.Name.Substring(3);
  Response.Write(userName);
  } */
  //DirectoryEntry ADRoot = new DirectoryEntry("GC://dc=home,dc=duncanmackenzie,dc=net", "", "");
  }
   
  }
}


using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using System.DirectoryServices;
using System.Collections;

namespace DMS.Layouts
{
  public partial class CUsers : LayoutsPageBase
  {
  protected void Page_Load(object sender, EventArgs e)
  {
  SPSite site = new SPSite("http://localhost");
  SPWeb web = site.OpenWeb();
   
  SPUserCollection users = web.SiteUsers;
  SPGroupCollection groups = web.SiteGroups;
  //users.Add(@"HNOP\zhoujieming","abc@hnop.com","","");
  web.AllowUnsafeUpdates = true;
  users.Remove(@"HNOP\zhoujieming");
 Response.Write("<b>SharePoint用户组:</b><br>");
  foreach(SPGroup group in groups)
  {
  Response.Write(group.Name + "<br>");
  }
   
   
  Response.Write("<b>SharePoint用户:</b><br>");
  foreach (SPUser user in users)
  {
  Response.Write(user.LoginName+"<br>");
  }
//获取站内有有角色
  Response.Write("<b>SharePoint角色:</b><br>");
  for (int i = 0; i < web.RoleDefinitions.Count; i++)
  {
   
  Response.Write(web.RoleDefinitions[i].Name+"<br>");
  }
  SPUser guser = web.EnsureUser(@"CLASS-15\student2");
   
  SPRoleAssignment roleAssignment = new SPRoleAssignment(web.EnsureUser(@"CLASS-15\student2"));
  roleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions["SLK Learner"]);
  web.RoleAssignments.Add(roleAssignment);
  /*
  //获取域,域计算机
  using (DirectoryEntry root = new DirectoryEntry("WinNT:"))
  {
  foreach (DirectoryEntry domain in root.Children)
  {
  Response.Write("Domain | WorkGroup:\t" + domain.Name+"<br>");
  foreach (DirectoryEntry computer in domain.Children)
  {
  Response.Write("Computer:\t" + computer.Name + "<br>");
  }
  }
  }
  Response.Write("<b>本机用户:</b><br>");
 DirectoryEntry LAd = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");


 foreach (object member in (IEnumerable)LAd.Invoke("Members"))
 {

  DirectoryEntry dirmem = new DirectoryEntry(member);
  Response.Write(dirmem.Name + "<br>");
 }



  Response.Write("<b>HOPN域用户:</b>");
  DirectoryEntry de = new DirectoryEntry();

  de.Path = "LDAP://CLASS-15/CN=Users,=DCgaochun,DC=jsmstc";
  de.Username = @"LASS-15\Administrator";
  de.Password = "password";

  //通过搜索查出所有的人员
  SearchResultCollection results;
  DirectorySearcher srch = new DirectorySearcher(de);
  srch.Filter = "(&(&(objectCategory=person)(objectClass=user)))";
  results = srch.FindAll();

  foreach (SearchResult sr in results)
  {
  DirectoryEntry objDE = sr.GetDirectoryEntry();
  string userName = objDE.Name.Substring(3);
  Response.Write(userName);
  } */
  //DirectoryEntry ADRoot = new DirectoryEntry("GC://dc=home,dc=duncanmackenzie,dc=net", "", "");
  }
   
  }
}

 
下载方式:https://pan.quark.cn/s/a4b39357ea24 布线问题(分支限界算法)是计算机科学和电子工程领域中一个广为人知的议题,它主要探讨如何在印刷电路板上定位两个节点间最短的连接路径。 在这一议题中,电路板被构建为一个包含 n×m 个方格的矩阵,每个方格能够被界定为可通行或不可通行,其核心任务是定位从初始点到最终点的最短路径。 分支限界算法是处理布线问题的一种常用策略。 该算法与回溯法有相似之处,但存在差异,分支限界法仅需获取满足约束条件的一个最优路径,并按照广度优先或最小成本优先的原则来探索解空间树。 树 T 被构建为子集树或排列树,在探索过程中,每个节点仅被赋予一次成为扩展节点的机会,且会一次性生成其全部子节点。 针对布线问题的解决,队列式分支限界法可以被采用。 从起始位置 a 出发,将其设定为首个扩展节点,并将与该扩展节点相邻且可通行的方格加入至活跃节点队列中,将这些方格标记为 1,即从起始方格 a 到这些方格的距离为 1。 随后,从活跃节点队列中提取队首节点作为下一个扩展节点,并将与当前扩展节点相邻且未标记的方格标记为 2,随后将这些方格存入活跃节点队列。 这一过程将持续进行,直至算法探测到目标方格 b 或活跃节点队列为空。 在实现上述算法时,必须定义一个类 Position 来表征电路板上方格的位置,其成员 row 和 col 分别指示方格所在的行和列。 在方格位置上,布线能够沿右、下、左、上四个方向展开。 这四个方向的移动分别被记为 0、1、2、3。 下述表格中,offset[i].row 和 offset[i].col(i=0,1,2,3)分别提供了沿这四个方向前进 1 步相对于当前方格的相对位移。 在 Java 编程语言中,可以使用二维数组...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值