zoukankan      html  css  js  c++  java
  • C#写的对系统用户和组操作的类(可以实现用户和组的添加、删除、修改)

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.DirectoryServices;

    namespace SystemUserOperationDll
    {
        public class SystemUserOperationClass
        {        
            private DirectoryEntry AD;
            

            /// <summary>
            /// 初始化方法
            /// </summary>
            /// <param name="strMachineName">机器名</param>
            /// <param name="strLoginName">登录用户名(如:Administrator)</param>
            /// <param name="strLoginPassword">登录密码</param>
            public SystemUserOperationClass(string strMachineName, string strLoginName, string strLoginPassword)
            {
                AD = new DirectoryEntry("WinNT://" + strMachineName + ",computer", ".\\" + strLoginName, strLoginPassword);
            }
            /// <summary>
            /// 添加系统(域)用户
            /// </summary>
            /// <param name="strUserName">用户名</param>
            /// <param name="strPassword">密码</param>
            /// <param name="strDescription">描述</param>
            /// <returns></returns>
            public bool AddDomainUser(string strUserName, string strPassword, string strDescription)
            {
                try
                {
                    DirectoryEntry NewUser;
                    NewUser = AD.Children.Add(strUserName, "user"); //添加用户
                    NewUser.Invoke("SetPassword", new Object[] { strPassword });  //设置密码
                    NewUser.Properties["description"].Add(strDescription);  //添加描述
                    NewUser.CommitChanges();

                    AD.Close();

                }
                catch
                {
                    throw;
                }
                return true;


            }
            /// <summary>
            /// 修改系统(域)用户
            /// </summary>
            /// <param name="strUserName">用户名</param>
            /// <param name="strPassword">密码</param>
            /// <param name="strDescription">描述</param>
            /// <returns></returns>
            public bool ModifyDomainUser(string strUserName, string strPassword, string strDescription)
            {
                try
                {
                    DirectoryEntry User = AD.Children.Find(strUserName);
                    if (User.Name != null)
                    {
                        //修改密码
                        User.Invoke("SetPassword", new Object[] { strPassword });
                        //修改描述
                        User.Properties["description"].Value = strDescription;
                        User.CommitChanges();
                    }
                    AD.Close();
                }
                catch
                {
                    throw;
                }
                return true;
            }
            /// <summary>
            /// 删除系统(域)用户
            /// </summary>
            /// <param name="strUserName">用户名</param>
            /// <returns></returns>
            public bool DeleteDomainUser(string strUserName)
            {
                try
                {
                    DirectoryEntry User = AD.Children.Find(strUserName, "user");//找到要删除的用户
                    if (User.Name != null)
                    {
                        AD.Children.Remove(User);
                    }
                    AD.Close();
                }
                catch
                {
                    throw;
                }
                return true;
            }
            /// <summary>
            /// 添加系统(域)组
            /// </summary>
            /// <param name="strGroupName">组名</param>
            /// <param name="strDescription">描述</param>
            /// <returns></returns>
            public bool AddDomainGroup(string strGroupName, string strDescription)
            {
                try
                {
                    DirectoryEntry Group;
                    Group = AD.Children.Add(strGroupName, "group");
                    Group.Properties["description"].Add(strDescription);
                    Group.CommitChanges();
                    AD.Close();
                }
                catch
                {
                    throw;
                }
                return true;
            }
            /// <summary>
            /// 修改系统(域)组
            /// </summary>
            /// <param name="strGroupName">组名</param>
            /// <param name="strDescription">描述</param>
            /// <returns></returns>
            public bool ModifyDomainGroup(string strGroupName, string strDescription)
            {
                try
                {
                    DirectoryEntry Group = AD.Children.Find(strGroupName);
                    if (Group.Name != null)
                    {
                        Group.Properties["description"].Value = strDescription;
                        Group.CommitChanges();
                    }
                    AD.Close();
                }
                catch
                {
                    throw;
                }
                return true;
            }
            /// <summary>
            /// 删除系统(域)组
            /// </summary>
            /// <param name="strGroupName">组名</param>
            /// <returns></returns>
            public bool DeleteDomainGroup(string strGroupName)
            {
                try
                {
                    DirectoryEntry Group = AD.Children.Find(strGroupName, "group");
                    if (Group.Name != null)
                    {
                        AD.Children.Remove(Group);
                    }
                    AD.Close();
                }
                catch
                {
                    throw;
                }
                return true;
            }
            /// <summary>
            /// 添加组用户
            /// </summary>
            /// <param name="strGroupName">组名</param>
            /// <param name="strUserName">用户名</param>
            /// <returns></returns>
            public bool AddGroupUser(string strGroupName,string strUserName)
            {
                try
                {
                    DirectoryEntry Group = AD.Children.Find(strGroupName, "group");// 找到组
                    DirectoryEntry User = AD.Children.Find(strUserName, "user");//找到用户
                    if (Group.Name != null && User.Name != null)
                    {
                        Group.Invoke("Add", new Object[] { User.Path });
                    }
                    AD.Close();
                }
                catch
                {
                    throw;
                }
                return true;
            }
            /// <summary>
            /// 移除组用户
            /// </summary>
            /// <param name="strGroupName">组名</param>
            /// <param name="strUserName">用户名</param>
            /// <returns></returns>
            public bool RemoveGroupUser(string strGroupName,string strUserName)
            {
                try
                {
                    DirectoryEntry Group = AD.Children.Find(strGroupName, "group");// 找到组
                   
                    object members = Group.Invoke("Members", null);
                    foreach (object member in (System.Collections.IEnumerable)members)
                    {
                        //获取该组的每个成员
                        DirectoryEntry x = new DirectoryEntry(member);

                        if (strUserName == x.Name) //要移除的用户存在的话,则从该组中移除。
                        {
                            DirectoryEntry User = AD.Children.Find(strUserName, "user");//找到该用户
                            Group.Invoke("Remove", new Object[] { User.Path });
                        }
                    }
                    AD.Close();               
                }
                catch
                {
                    throw;
                }
                return true;
            }
                  
        }

    第一次做这方面的东西,有不足之处还请不吝指教。

  • 相关阅读:
    Openssl命令详解
    Openssl命令详解
    Mac根目录下无法创建文件或目录
    解决 mysql from_base64 函数返回乱码的问题
    elementUI日期选择器 el-date-picker根据所选日期选择禁用
    el-dialog设置为点击弹窗以外的区域不自动关闭弹窗
    在vue项目中MD5加密的使用方法
    bower install 报错fatal: unable to access 'https://github.com/angular/bower-angular-touch.git/'类错误解决方法
    angular项目grunt serve报错Cannot find where you keep your Bower packages
    移动端开发--》适配各种机型样式大小
  • 原文地址:https://www.cnblogs.com/yangxiaohu1/p/1337206.html
Copyright © 2011-2022 走看看