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

  • 相关阅读:
    iOS-多线程
    iOS-Quartz 2D
    iOS-手势识别
    iOS-触摸事件
    iOS-导航控制器
    iOS-程序的启动过程
    iOS-UIApplication
    iOS-项目常见文件
    iOS-UI控件常见属性总结
    iOS-UIDatePicker、UIPickerView及键盘处理
  • 原文地址:https://www.cnblogs.com/boneking/p/3572859.html
Copyright © 2011-2022 走看看