zoukankan      html  css  js  c++  java
  • [C#]创建Windows用户及组

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Configuration;
    using System.DirectoryServices.AccountManagement;
    using System.Collections;
    
    namespace UserTrans
    {
        public static class Commons
        {
            static Configuration config;
            static AppSettingsSection appSetting;
            public static ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            static bool CreateLocalWindowsAccount(string userName, string passWord, string displayName, string description, string groupName, bool canChangePwd, bool pwdExpires)
            {
                bool retIsSuccess = false;
                try
                {
                    PrincipalContext context = new PrincipalContext(ContextType.Machine);
                    UserPrincipal user = new UserPrincipal(context);
                    user.SetPassword(passWord);
                    user.DisplayName = displayName;
                    user.Name = userName;
                    user.Description = description;
                    user.UserCannotChangePassword = canChangePwd;
                    user.PasswordNeverExpires = pwdExpires;
                    user.Save();
    
                    GroupPrincipal group = GroupPrincipal.FindByIdentity(context, groupName);
                    group.Members.Add(user);
                    group.Save();
                    retIsSuccess = true;
                }
                catch (Exception ex)
                {
                    retIsSuccess = false;
                }
                return retIsSuccess;
            }
    
            static GroupPrincipal CreateGroup(string groupName, Boolean isSecurityGroup)
            {
                GroupPrincipal retGroup = null;
                try
                {
                    retGroup = IsGroupExist(groupName);
                    if (retGroup == null)
                    {
                        PrincipalContext ctx = new PrincipalContext(ContextType.Machine);
                        GroupPrincipal insGroupPrincipal = new GroupPrincipal(ctx);
                        insGroupPrincipal.Name = groupName;
                        insGroupPrincipal.IsSecurityGroup = isSecurityGroup;
                        insGroupPrincipal.GroupScope = GroupScope.Local;
                        insGroupPrincipal.Save();
                        retGroup = insGroupPrincipal;
                    }
                }
                catch (Exception ex)
                {
    
                }
    
                return retGroup;
            }
    
            static GroupPrincipal IsGroupExist(string groupName)
            {
                GroupPrincipal retGroup = null;
                try
                {
                    PrincipalContext ctx = new PrincipalContext(ContextType.Machine);
                    GroupPrincipal qbeGroup = new GroupPrincipal(ctx);
                    PrincipalSearcher srch = new PrincipalSearcher(qbeGroup);
                    foreach (GroupPrincipal ingrp in srch.FindAll())
                    {
                        if (ingrp != null && ingrp.Name.Equals(groupName))
                        {
                            retGroup = ingrp;
                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
    
                }
                return retGroup;
            }

            public static int UpdateGroupUsers(string groupName, List<string> usersName)
            {
                List<string> addedUsers = new List<string>();
                int retAddCount = 0;
    
                GroupPrincipal qbeGroup = CreateGroup(groupName, false);
                foreach (UserPrincipal user in qbeGroup.GetMembers())
                {
                    if (usersName.Contains(user.Name))
                    {
                        addedUsers.Add(user.Name);
                        retAddCount++;
                    }
                    else
                    {
                        user.Delete();
                    }
                }
                foreach (string addedUserName in addedUsers)
                {
                    usersName.Remove(addedUserName);
                }
                foreach (string addUserName in usersName)
                {
                    bool isSuccess = CreateLocalWindowsAccount(addUserName, "password", addUserName, "", groupName, false, false);
                    if (isSuccess)     retAddCount++;
                }return retAddCount;
            }

    } }

      参考

    http://msdn.microsoft.com/zh-cn/library/bb924542(v=vs.90).aspx

  • 相关阅读:
    css3背景色过渡
    HttpUtility.UrlEncode与Server.UrlEncode()转码区别
    js 中编码(encode)和解码(decode)的三种方法
    jQuery 页面加载初始化
    oracle 索引失效原因_汇总
    jdbc连接数据库使用sid和service_name的区别
    作为首席架构师,我是如何选择并落地架构方案的?
    (二)、JAVA运行时数据区域
    (一)、Java内存模型
    Java中Volatile关键字详解
  • 原文地址:https://www.cnblogs.com/boneking/p/3572859.html
Copyright © 2011-2022 走看看