winform开发之创建windows系统用户

概述

之前做了个服务器主机助手,其中有个功能就是使用程序创建系统账户。本文实例讲述了C#创建windows系统用户的方法。分享给大家供大家参考。主要介绍了C#创建windows系统用户的方法,涉及C#操作用户名、密码、显示名称、描述、是否强制修改密码、密码是否过期等技巧。

主要代码实现

1、添加系统(域)用户

/// <summary>
        /// 添加系统(域)用户
        /// </summary>
        /// <param name="strUserName"></param>
        /// <param name="strPassword"></param>
        /// <param name="strDescription"></param>
        /// <param name="strGroup"></param>
        /// <returns></returns>
        public static bool  AddUser(string strUserName, string strPassword, string strDescription, string strGroup)
        {
            using (DirectoryEntry AD = new DirectoryEntry(@"WinNT://" + Environment.MachineName + ",computer"))
            {
                try
                {
                    DirectoryEntry User = null;
                    try
                    {
                        User = AD.Children.Find(strUserName, "user");//找到要删除的用户
                        if (User == null)
                            User = AD.Children.Add(strUserName, "user");
                    }
                    catch
                    {
                        User = AD.Children.Add(strUserName, "user");
                    }


                    User.Invoke("SetPassword", new object[] { strPassword });   // 密码
                    User.Properties["description"].Add(strDescription);  //添加描述
                    //User.Invoke("Put", new object[] { "Description", strDescription });
                    User.Invoke("Put", "UserFlags", 66049); //密码永不过期
                    User.CommitChanges();


                    try
                    {
                        DirectoryEntry Group = AD.Children.Find(strGroup, "group");
                        if (strGroup != null)
                            Group.Invoke("Add", new object[] { User.Path.ToString() });
                    }
                    catch { }
                }
                catch (Exception ex)
                {
                    EventLog.WriteEntry("autosystem", System.Reflection.MethodBase.GetCurrentMethod().Name.ToString() + ":" + ex.Message, EventLogEntryType.Error);
            
                }
            }

2、修改密码

/*
         * 修改密码
         */
        public static bool PwdModify(string strUserName, string strPassword)
        {
            using (DirectoryEntry AD = new DirectoryEntry(@"WinNT://" + Environment.MachineName + ",computer"))
            {
                try
                {
                    DirectoryEntry User = AD.Children.Find(strUserName);
                    //修改密码
                    User.Invoke("SetPassword", new Object[] { strPassword });
                    User.CommitChanges();
                }
                catch {
                    return false;
                }
            }
            return true;

3、 删除系统(域)用户

/// <summary>
        /// 删除系统(域)用户
        /// </summary>
        /// <param name="strUserName">用户名</param>
        /// <returns></returns>
        public static bool RemoveUser(string strUserName)
        {
            try
            {
                using (DirectoryEntry AD = new DirectoryEntry(@"WinNT://" + Environment.MachineName + ",computer"))
                {
                    DirectoryEntry User = AD.Children.Find(strUserName, "user");//找到要删除的用户
                    if (User != null)
                        AD.Children.Remove(User);
                }
            }
            catch
            {
                return false;
            }
            return true;

4、判断组下的用户是否存在

/// <summary>
        /// 判断组下的用户是否存在
        /// </summary>
        /// <param name="strGroupName">组名</param>
        /// <param name="strUserName">用户名</param>
        /// <returns></returns>
        public static bool GroupSiteExists(string strGroupName, string strUserName)
        {
            try
            {
                using (DirectoryEntry AD = new DirectoryEntry(@"WinNT://" + Environment.MachineName + ",computer"))
                {
                    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) //要移除的用户存在的话,则从该组中移除。
                        {
                            return true;
                        }
                    }
                }
                return false;
            }
            catch
            {
                return false;
            }


        }
    }

希望本文所述对大家有所帮助。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WinForm是一种用于Windows桌面应用程序开发的技术,它可以在Windows操作系统上构建具有可视化界面的应用程序。开发图书管理系统,采用WinForm技术是一个不错的选择。下面从以下几个方面详细介绍: 1.用户界面 图书管理系统需要一个良好的用户界面,WinForm可以通过拖放控件、自定义UI等方式来实现这一点。例如,可以在界面中添加图书、图书库存、图书借阅等控件,通过设置它们的属性来设置控件大小、颜色、位置等信息,从而创建美观的用户界面。 2.数据库管理 图书管理系统需要管理大量的图书数据,因此需要一个强大的数据库管理系统WinForm可以与多种数据库管理系统一起使用,例如SQL Server、MySQL等。通过使用这些数据库管理系统,可以轻松地进行数据的添加、修改、删除、查询等操作。 3.打印 图书管理系统需要打印各种报表、借书单等,WinForm内置了打印支持,可以使用PrintDocument类实现打印,而不需要重新编写底层的打印逻辑,这极大地提高了开发的效率。 4.安全性 图书管理系统需要保证数据的安全性,WinForm可以集成Windows身份验证和授权来为应用程序提供安全性。管理员可以通过设置权限来控制不同用户的操作,从而保证系统的安全性。 综上所述,采用WinForm技术开发图书管理系统,可以有效提升开发效率、增强用户体验、提升系统的安全性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值