`
laintoday
  • 浏览: 65335 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

将新增用户添加到指定用户组

 
阅读更多

在oa系统中,对于员工信息,设计的是让行政\人事的同事,自行维护一张名为“员工信息”的列表。后端通过制定程序,来达到行政\人事所需的要求。于是就产生了"将在员工信息列表中新增员工添加到指定组"的需求。(其实这个之前一直是手工输入,但觉得有空的时候,还是应该自动化下,所以。。)

关键代码如下:

 

//从域中获取该用户
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://domain", @"username", "password", AuthenticationTypes.Secure);
DirectorySearcher ds = new DirectorySearcher(directoryEntry);
ds.Filter = "(&(objectClass=User))";
SearchResultCollection collection = ds.FindAll();
                      
foreach (SearchResult sr in collection)
{
         System.DirectoryServices.DirectoryEntry det = sr.GetDirectoryEntry();
         System.DirectoryServices.PropertyCollection pc = det.Properties;
                        

         if (det.Properties["mail"].Value != null && det.Properties["displayName"].Value != null && det.Properties["userPrincipalName"].Value!=null)
         {
                   if (det.Properties["displayName"].Value.ToString().Equals(employeeName))
                   {
                           string tmpLoginName = det.Properties["userPrincipalName"].Value.ToString();
                           try 
                          {
                                string[] sArray = tmpLoginName.Split(new char[1] { '@' });
                                       
                                 try 
                                 {
                                       newUser = web.EnsureUser(@"domain\"+sArray[0]);
                                          
                                  }catch(Exception ex)
                                   {
                                           Console.WriteLine(ex.stacktrace);
                                   }
                                       

                                   }catch(Exception ex)
                                   {
                                       Console.WriteLine(ex.Message);
                                   }

                                   break;

                               }
                            }
                           
                       } 


           SPGroupCollection groups = web.Groups;
           foreach (SPGroup tmpgroup in groups)
           {
                 if (tmpgroup.Name.Equals(groupName))
                 {
                       destGroup = tmpgroup;
                       break;

                 }
            }

            //将新建员工加入指定组
            if (destGroup != null)
            {
                destGroup.AddUser(newUser.LoginName, newUser.Email, newUser.Name, newUser.Notes);
                        
             }

 需要引用dll: System.DirectoryServices。

 

 其中SPWeb.EnsureUser可以替换为SPWeb.AllUsers.Add(),直接用搜到的用户的域帐号信息来添加。

 

附上EnsureUser的代码:

 

 

 try
    {
        SPUser byLoginNoThrow = this.SiteUsers.GetByLoginNoThrow(logonName);
        if (byLoginNoThrow != null)
        {
            return byLoginNoThrow;
        }
    }
    catch
    {
    }
    if (!this.DoesUserHavePermissions(SPBasePermissions.BrowseUserInfo))
    {
        SPGlobal.HandleUnauthorizedAccessException(new UnauthorizedAccessException());
    }
    SPPrincipalInfo info = SPUtility.ResolvePrincipalInternal(this, null, null, logonName, SPPrincipalType.SecurityGroup | SPPrincipalType.User, SPPrincipalSource.All, null, false, true);
    if (info == null)
    {
        throw new SPException(SPResource.GetString("UserCouldNotBeFound", new object[] { logonName }));
    }
    if (info.PrincipalId < 0)
    {
        this.SiteUsers.Add(info.LoginName, info.Email, info.DisplayName, string.Empty);
    }
    return this.SiteUsers[info.LoginName];
 

再附上"在console程序里使用SPWeb.EnsureUser"无效的原因分析和解决方法:

http://blog.mastykarz.nl/inconvenient-programmatically-sharepoint-users-spweb-ensureuser/

 

分享到:
评论

相关推荐

    Linux基础课件新增用户组groupadd命令共10页

    创建用户组后,可以使用`usermod`命令将用户添加到该组,或者在创建新用户时指定其初始用户组。例如,将用户`john`添加到`developers`组: ```bash sudo usermod -a -G developers john ``` 这里,`-a`表示追加用户...

    linux新增用户设置权限与生成公钥私钥.pdf

    * -g:指定用户所属的用户组 * -G:指定用户所属的附加组 * -s:指定用户的登录 Shell * -u:指定用户的用户号,如果同时有-o 选项,则可以重复使用其他用户的标识号 * 用户名:指定新用户的登录名 二、删除用户...

    linux用户创建

    将用户切换到nagios 用户,添加nagios的访问用户: su nagios htpasswd –c /usr/local/nagios/etc/htpasswd.users nagiosadmin 系统会提示输入两次密码,例如两次输入nagios。 注: 这是第一次创建用户,需要“-c”...

    网络操作系统课程实验报告5-管理用户和组.doc

    * 使用 useradd 命令添加一个新用户并指定用户组 知识点3: 图形用户界面管理用户和组 * 使用 GUI 管理用户和组 * 查看增加的用户帐号和用户组 * 增加一个用户帐号和用户组 * 添加一个用户组 * 将用户归并入用户组 ...

    centos7限制普通用户访问单一目录.docx

    为了将loglook用户的家目录设置为/home/wwwroot/a,我们可以使用`usermod`命令: ```bash usermod -d /home/wwwroot/a loglook ``` 现在,我们需要复制隐藏文件.bash_logout、.bash_profile和.bashrc到新的家目录: ...

    Linux基础课件-- 新增用户-useradd命令.pptx

    3. 将用户添加到默认的用户组,通常是与用户名相同的组。 4. 根据指定的选项,可以调整用户账号的其他属性,如权限、过期日期等。 ### 二、useradd命令的基本格式 `useradd`命令的基本调用格式如下: ```bash ...

    Linux基础课件新增用户useradd命令共10页.pd

    3. **-G, --groups GROUPS**:指定用户附加到的附加组,多个组之间用逗号分隔。 4. **-s, --shell SHELL**:设定用户的登录Shell,如/bin/bash。 5. **-d, --home-dir HOME_DIR**:指定用户的家目录路径,如果不...

    linux新增用户设置权限与生成公钥私钥.docx

    可以使用`usermod -G groupname username`或`gpasswd -a user group`命令将用户添加到新的用户组。 5. **用户口令的管理**: `passwd`命令用于管理用户口令。普通用户可以修改自己的口令,超级用户可以修改任意...

    linux新增用户设置权限与生成公钥私钥.doc

    例如,`usermod -G groupname username`或`gpasswd -a user group`将用户添加到`groupname`组。 此外,管理用户口令是保障系统安全的关键步骤。`passwd`命令用于设置和修改口令。超级用户可以为任何用户设置口令,...

    windowsuser最新多用户、多工作组指定小工具

    4. **多工作组管理**:在企业环境中,为了更好地组织和管理用户,通常会将用户分配到不同的工作组。此工具支持创建和管理多个工作组,便于权限分配和资源访问控制。 5. **批处理命令**:根据压缩包内的文件名...

    linux查看所有用户和查看用户组的方法(修改用户组)

    本文将详细介绍 Linux 下查看所有用户、用户组的方法以及如何修改用户组。 #### 二、查看所有用户 在 Linux 中,查看所有用户最简单有效的方法是通过 `/etc/passwd` 文件。此文件包含了系统中所有用户的列表及其...

    添加FTP用户的流程.doc

    这样,当用户登录时,他们将被重定向到这个指定的目录。 6. **执行命令创建数据库**: 使用`db_load`命令,将`logins.txt`中的用户名和密码信息转化为数据库格式,保存在`vsftpd_login.db`文件中。这使得vsftpd...

    实验7Linux用户管理201911181

    5. **新增用户组**: `groupadd`命令用于创建新组,如`groupadd group1`。`groupadd -g 1001 developer`创建了名为developer的新组,并指定了组ID为1001。 6. **删除已有用户组**: 使用`groupdel`命令删除组,如...

    svn增加用户插件(安装它可以用界面的方式新增,修改svn用户)

    通过插件,你可以直观地设定用户或用户组对仓库目录的读、写、执行等权限。 7. **备份与恢复**:为了防止数据丢失,定期备份用户和权限配置是必要的。大多数插件会提供备份和恢复功能,确保在出现问题时可以快速...

    solidworks 2009 新增功能

    - **转换文件到当前的SolidWorks版本**:此功能允许用户将旧版SolidWorks文件轻松转换为最新版本格式,确保了文件兼容性的同时也保留了原有的设计细节。 - **自定义属性**:新增功能允许用户创建并自定义属性标签,...

    C# winform 权限控制 包括角色 用户 权限设置

    登录成功后,将用户ID与所选角色关联,并保存在Session或Cookie中,以便后续权限检查。 **3. 角色和权限的创建** 提供一个后台管理界面,允许管理员创建角色,分配权限。例如,可以创建“管理员”角色,赋予所有...

    linux服务器下添加用户和删除用户的命令

    - `-G 用户组,用户组`: 设置用户附加到的用户组。 - `-s Shell文件`: 设置用户的登录Shell。 - `-u 用户号`: 指定用户的用户ID(UID)。如果使用`-o`选项,可以复用其他用户的UID。 - `用户名`: 需要创建的新用户...

Global site tag (gtag.js) - Google Analytics