c# 对windows用户和组操作实例

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.DirectoryServices;
namespace JH.Framework.Security
{
    ///

/// 计算机用户和组操作类
    ///

public class UserAndGroupHelper
    {
        private static readonly string PATH = "WinNT://" + Environment.MachineName;
        ///

/// 添加windows用户
        ///

/// 用户名
        /// 密码
        /// 所属组
        /// 描述
        public static void AddUser(string username, string password, string group, string description)
        {
            using (DirectoryEntry dir = new DirectoryEntry(PATH))
            {
                using (DirectoryEntry user = dir.Children.Add(username, "User")) //增加用户名
                {
                    user.Properties["FullName"].Add(username); //用户全称
                    user.Invoke("SetPassword", password); //用户密码
                    user.Invoke("Put", "Description", description);//用户详细描述
                    //user.Invoke("Put","PasswordExpired",1); //用户下次登录需更改密码
                    user.Invoke("Put", "UserFlags", 66049); //密码永不过期
                    //user.Invoke("Put", "UserFlags", 0x0040);//用户不能更改密码s
                    user.CommitChanges();//保存用户
                    using (DirectoryEntry grp = dir.Children.Find(group, "group"))
                    {
                        if (grp.Name != "")
                        {
                            grp.Invoke("Add", user.Path.ToString());//将用户添加到某组
                        }
                    }
                }
            }
        }
        ///

/// 更改windows用户密码
        ///

/// 用户名
        /// 新密码
        public static void UpdateUserPassword(string username, string newpassword)
        {
            using (DirectoryEntry dir = new DirectoryEntry(PATH))
            {
                using (DirectoryEntry user = dir.Children.Find(username, "user"))
                {
                    user.Invoke("SetPassword", new object[] { newpassword });
                    user.CommitChanges();
                }
            }
        }
        ///

/// 删除windows用户
        ///

/// 用户名
        public static void RemoveUser(string username)
        {
            using (DirectoryEntry dir = new DirectoryEntry(PATH))
            {
                using (DirectoryEntry user = dir.Children.Find(username, "User"))
                {
                    dir.Children.Remove(user);
                }
            }
        }
        ///

/// 添加windows用户组
        ///

/// 组名称
        /// 描述
        public static void AddGroup(string groupName, string description)
        {
            using (DirectoryEntry dir = new DirectoryEntry(PATH))
            {
                using (DirectoryEntry group = dir.Children.Add(groupName, "group"))
                {
                    group.Invoke("Put", new object[] { "Description", description });
                    group.CommitChanges();
                }
            }
        }
        ///

/// 删除windows用户组
        ///

/// 组名称
        public static void RemoveGroup(string groupName)
        {
            using (DirectoryEntry dir = new DirectoryEntry(PATH))
            {
                using (DirectoryEntry group = dir.Children.Find(groupName, "Group"))
                {
                    dir.Children.Remove(group);
                }
            }
        }
    }
}

(0)

相关推荐

  • C# Winform 禁止用户调整ListView的列宽

    复制代码 代码如下: // 事件: 改变列宽的时候 private void ColumnWidthChange(object sender, ColumnWidthChangingEventArgs e) { // 如果调整的不是第一列,就不管了 if (e.ColumnIndex > 0) return; // 取消掉正在调整的事件 e.Cancel = true; // 把新宽度恢复到之前的宽度 e.NewWidth = this.lvStudents.Columns[e.ColumnIn

  • C#实现判断当前操作用户管理角色的方法

    本文实例讲述了C#实现判断当前操作用户管理角色的方法.分享给大家供大家参考.具体实现方法如下: /// <summary> /// 判断当前操作用户的管理角色 /// </summary> public static void GetCurrentUserRole() { AppDomain appDomain = System.Threading.Thread.GetDomain(); appDomain.SetPrincipalPolicy(System.Security.Pr

  • c#之用户定义的数据类型转换介绍

    c# 允许用户进行两种定义的数据类型转换,显式和隐式,显式要求在代码中显式的标记转换,其方法是在圆括号中写入目标数据类型. 对于预定义的数据类型,当数据类型转换时可能失败或丢失某些数据,需要显式转换, 1 把int数值转换成short时,因为short可能不够大,不能包含转换的数值. 2 把有符号的数据转换为无符号的数据,如果有符号的变量包含一个负值,会得到不正确的结果. 3 把浮点数转换为整数数据类型时,数字的小数部分会丢失. 此时应在代码中进行显式数据类型,告诉边起义你知道这会有丢失数据的危

  • C# 获取系统进程的用户名

    需要添加对 System.Management.dll 的引用 复制代码 代码如下: using System.Diagnostics; using System.Management;static void Main(string[] args) { foreach (Process p in Process.GetProcesses()) { Console.Write(p.ProcessName); Console.Write("----"); Console.WriteLine

  • C#用户定义类型转换详解

    C#用户定义类型转换 •用于自定义类和结构能够进行隐式转换和显示转换.例如:将一个自定义类类型转换成整型,浮点型等,反之亦然. C#提供隐式转换和显式转换 •隐式转换:编译器自动执行转换•显式转换:编译器只在使用显式转换运算符时才执行转换声明隐式转换的语法如下.注:所有用户定义转换必须使用public和static修饰符 复制代码 代码如下: public static implicit operator TargetType(SourceType Identifier){       ... 

  • C#创建windows系统用户的方法

    本文实例讲述了C#创建windows系统用户的方法.分享给大家供大家参考.具体如下: 下面的代码可以通过c#创建一个windows的本地系统账户,参数包括用户名.密码.显示名称.描述.是否强制修改密码.密码是否过期 /// <summary> /// method to create a new local Windows user account /// </summary> /// <param name="username">Username

  • C#实现将选中复选框的信息返回给用户的方法

    本文实例讲述了C#实现将选中复选框的信息返回给用户的方法.分享给大家供大家参考.具体实现方法如下: /// <summary> /// 自定义方法,获得复选框中选中的值,用指定的分隔符隔开 /// </summary> /// <param name="split">分隔符</param> /// <param name="chk">复选框名称</param> /// <returns&g

  • c#通过进程调用cmd判断登录用户权限代码分享

    复制代码 代码如下: /// <summary>/// 应用程序的主入口点./// </summary>[STAThread]static void Main(){ if (RunCmd("net localgroup administrators").IndexOf(System.Environment.UserName) >= 0)    { //顺利执行.    }    else    {        //报错提示系统不是管理员用户登录,容易导致

  • asp.net(c#)限制用户输入规定的字符和数字的代码

    一下是这个代码: 只允许 用户名输入:用户名称的开头,必须为0~9.a~z或A~Z ! 复制代码 代码如下: protected void Button3_Click(object sender, EventArgs e) { int error_count = 0; //用于识别用户名的合法性 string str = TextBox1.Text.Trim(); if (str == string.Empty) { Response.Write("用户名称不能为空!"); retur

  • c# 对windows用户和组操作实例

    复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.DirectoryServices;namespace JH.Framework.Security{    /// /// 计算机用户和组操作类    /// public class UserAndGroupHelper    {        private static reado

  • Java线程组操作实例分析

    本文实例讲述了Java线程组操作.分享给大家供大家参考,具体如下: 一 点睛 1 Java使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制. 2 一旦某个线程加入了指定线程组之后,该线程将一直属于该线程组,直到该线程死亡,线程运行中途不能改变它所属的线程组. 3 Thread类提供了如下几个构造器来设置新创建的线程属于哪个线程组: Thread(ThreadGroup group, Runnable target):以target的run

  • linux用户和组命令实例分析【切换、添加用户、权限控制等】

    本文实例讲述了linux用户和组命令.分享给大家供大家参考,具体如下: 1.用户相关命令   su     切换用户        root -> 普通用户   不需要密码        普通用户之间        需要密码        普通用户->root     需要密码 newgrp 切换组身份 whoami     查看当前登录名称 id         查看用户信息 groups     查看用户组信息 chfn       设置用户备注信息 finger     查看用户备注信息

  • Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】

    本文实例讲述了Windows上php5.6操作mongodb数据库的方法.分享给大家供大家参考,具体如下: 一.配置 针对不同线程安全.VC版本的 PHP 发行版,可从 PECL 获取到预编译的二进制文件. 解压,并把 php_mongo.dll 放到 PHP 扩展目录(默认是 "ext"). 将以下内容添加到 php.ini 文件: extension=php_mongo.dll Note: 为 Windows 用户添加额外的依赖 DLL 为了使此扩展生效, DLL 文件必须能在 W

  • linux 查找过滤及用户和组管理命令的一些实例

    1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可. ~]# who | cut -d' ' -f1 | sort | uniq 2.列出最后登录到当前系统的用户的相关信息. ~]# last | head -1 3.列出当前系统上被用户当作其默认shell的最多的那个shell. ~]# cut -d: -f7 /etc/passwd | uniq -c | sort -n | tail -1 4.将/etc/passwd中的第三个字段数值最大的后10个用

  • Python 文件读写操作实例详解

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()2.返回指定目录下的所有文件和目录名:os.listdir()3.函数用来删除一个文件:os.remove()4.删除多个目录:os.removedirs(r"c:\python")5.检验给出的路径是否是一个文件:os.path.isfile()6.检验给出的路径是否是一个目录:os.path.isdir()7.判断是

  • Laravel框架处理用户的请求操作详解

    本文实例讲述了Laravel框架处理用户的请求操作.分享给大家供大家参考,具体如下: 1.请求对象Request Request中包含了用户请求的一些信息,使用该对象首先需要use Illuminate\Http\Request类,之后在参数中传入该对象, public static function getRequest(Request $request) { //获取请求类型 echo "请求类型" . $request->method() . "<br/&g

  • JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)

    下面通过通过图文并茂的方式给大家介绍JavaWeb实现用户登录注册功能实例代码,一起看看吧. 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据. Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式. 这里以一个最常用的用户登录注册程序来讲解Servlet+JS

  • linux 用户和组命令整理及详细介绍

    1.列出当前系统上所有已经登录的用户名,注意:同一个用户登录多次,则只显示一次即可. [root@node2 ~]# who root pts/0 2016-10-08 13:28 (10.106.64.41) root pts/1 2016-10-08 13:44 (10.106.64.41) root pts/2 2016-10-08 14:22 (10.106.65.82) root pts/3 2016-10-08 14:22 (10.106.65.82) root pts/4 2016

  • python在windows下实现ping操作并接收返回信息的方法

    本文实例讲述了python在windows下实现ping操作并接收返回信息的方法.分享给大家供大家参考.具体分析如下: 这段python代码调用windows下的ping命令,通过subprocess在其子进程里面实现,由于windows下的ping和linux下的ping返回的消息不太一样,所以这段python代码要想在linux下运行,需要修改一下正则匹配 复制代码 代码如下: import subprocess   import re p = subprocess.Popen(["ping

随机推荐