`
wumingdlz
  • 浏览: 31315 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
最近访客 更多访客>>
社区版块
存档分类
最新评论

C#使用DirectoryEntry类操作Windows帐户

阅读更多
引用 http://www.cnblogs.com/skynothing/archive/2010/07/26/1785344.html

这几天使用C#操作windows帐户相当纠结,以前没做过,google翻阅了不少资料,尝试不少方法,终于解决了我的问题。

1.创建windows帐户

view sourceprint?01 /// <summary> 

02 /// 创建Windows帐户 

03 /// </summary> 

04 /// <param name="pathname"></param> 

05 /// <returns></returns> 

06 public static void CreateLocalUser(string username, string password, string description) 

07 { 

08     DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer"); 

09     var newUser = localMachine.Children.Add(username, "user"); 

10     newUser.Invoke("SetPassword", new object[] { password }); 

11     newUser.Invoke("Put", new object[] { "Description", description }); 

12     newUser.CommitChanges(); 

13     localMachine.Close(); 

14     newUser.Close(); 

15 }

2.更改Windows帐户密码

view sourceprint?01 /// <summary> 

02 /// 更改Windows帐户密码 

03 /// </summary> 

04 /// <param name="username"></param> 

05 /// <param name="oldPwd"></param> 

06 /// <param name="newPwd"></param> 

07 public static void ChangeWinUserPasswd(string username, string oldPwd, string newPwd) 

08 { 

09     DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer"); 

10     DirectoryEntry user = localMachine.Children.Find(username, "user"); 

11     object[] password = new object[] { oldPwd, newPwd }; 

12     object ret = user.Invoke("ChangePassword", password); 

13     user.CommitChanges(); 

14     localMachine.Close(); 

15     user.Close(); 

16 }

3.判断Windows用户是否存在

view sourceprint?01 /// <summary> 

02 /// 判断Windows用户是否存在 

03 /// </summary> 

04 /// <param name="username"></param> 

05 /// <returns></returns> 

06 public static bool ExistWinUser(string username) 

07 { 

08     try

09     { 

10         using (DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer")) 

11         { 

12             var user = localMachine.Children.Find(username, "user"); 

13             return user != null; 

14         } 

15     } 

16     catch

17     { 

18         return false; 

19     } 

20 }
4.删除Windows用户view sourceprint?01 /// <summary> 

02 /// 删除Windows用户 

03 /// </summary> 

04 /// <param name="username"></param> 

05 /// <returns></returns> 

06 public static bool DeleteWinUser(string username) 

07 { 

08     try

09     { 

10         using (DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer")) 

11         { 

12             //删除存在用户 

13             var delUser = localMachine.Children.Find(username, "user"); 

14             if (delUser != null) 

15             { 

16                 localMachine.Children.Remove(delUser); 

17             } 

18         } 

19         return true; 

20     } 

21     catch

22     { 

23         return false; 

24     } 

25 }



5.启用/禁用windows帐户

view sourceprint?01 /// <summary> 

02 /// 启用/禁用windows帐户 

03 /// </summary> 

04 /// <param name="username"></param> 

05 public static void Disable(string username, bool isDisable) 

06 { 

07     var userDn = "WinNT://" + Environment.MachineName + "/" + username + ",user"; 

08     DirectoryEntry user = new DirectoryEntry(userDn); 

09     user.InvokeSet("AccountDisabled", isDisable); 

10     user.CommitChanges(); 

11     user.Close(); 

12 }



  操作windows帐户的方法的诀窍在于通过DirectoryEntry 实例调用Invoke,InvokeGet,InvokeSet这三个方法。此三个方法可以对对本机 Active Directory 对象调用方法。操作win帐户的Active Directory 对象就是IADsUser接口。DirectoryEntry 实例通过调用Invoke方法调用IADsUser接口的方法,如上面修改Windows帐户密码就是通过调用IADsUser接口的“ChangePassword”方法;通过InvokeGet和InvokeSet方法调用IADsUser接口的属性,如上面的启用/禁用windows帐户,调用IADsUser接口的“AccountDisabled”属性。IADsUser接口具体有什么方法和属性可参考:http://msdn.microsoft.com/zh-cn/library/aa746340(v=VS.85).aspx

分享到:
评论

相关推荐

    C#使用DirectoryEntry组件建立虚拟目录

    摘要:C#源码,系统相关,虚拟目录,DirectoryEntry 一个DirectoryEntry组件的应用实例,基于C#环境使用DirectoryEntry组件建立虚拟目录的一个小例子,通过这个例子您将学会使用DirectoryEntry组件的用法,测试时请输入...

    C#修改及重置电脑密码DirectoryEntry实现方法

    主要介绍了C#修改及重置电脑密码DirectoryEntry实现方法,实例分析了C#修改及重置电脑密码的相关技巧,需要的朋友可以参考下

    C# 获取本地计算机所有共享文件和路径源码

    C# 获取本地计算机所有共享文件和路径源码 快快快快快快快快快快快快快快快快快快快快快快快快快快快快快快快快快快快快快快

    DirectoryEntry对象

    DirectoryEntry对象

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和...Windows高级控件的使用、DataGridView数据控件、自定义用户控件、文件基本操作、文件夹基本操作、文件流操作、加密、解密及解压缩文件、C#与...

    C#全能速查宝典

    分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用的属性、方法、类和各种技术,...

    C#程序开发范例宝典3

    第3章 组件应用 127 3.1 BackgroundWorker组件 128 实例094 BackgroundWorker组件执行异步操作 128 3.2 ErrorProvider组件 130 实例095 使用ErrorProvider组件验证文本框输入 130 实例096...

    利用DirectoryEntry组件来查看网络,显示域用户的列表

    利用DirectoryEntry组件来查看网络,显示域用户的列表利用DirectoryEntry组件来查看网络,显示域用户的列表

    C#动态创建WEB/FTP虚拟目录

    在Windows中,一般使用WMI管理动态目录,DirectoryEntry类就是对这些接口的封装,可以用来比较简单的实现托管编程创建虚拟目录!

    操作系统用户/用户组增加,修改,删除类,本人已测试通过

    花费一天时间,将网上的资料进行整合,并一一调试,测试通过。 功能包括: 增加用户、用户组;...是使用DirectoryEntry对本地用户及组进行处理 需要引用DirectoryServices.dll 可以根据自己的情况,选择不同的类

    C#实现获取IIS站点及虚拟目录信息的方法

    本文实例讲述了C#实现获取IIS站点及虚拟目录信息的方法。分享给大家供大家参考。具体如下: using System; using System.DirectoryServices; using System.Collections.Generic; using System.Text; namespace ...

    C# 创建IIS虚拟目录

    通过C#代码来创建IIS虚拟目录,可以制作网站发布程序,减短网站发布的时间!

    C#.net_经典编程例子400个

    273 实例191 判断文件是否正在被使用 274 实例192 在程序中调用.HLP文件 275 实例193 C#中实现文件拖放 276 实例194 文件比较 276 第7章 操作系统与Windows相关程序 279 7.1 启动相关...

    C#程序开发范例宝典(第2版).part08

    实例105 使用EventLog组件读写Windows系统事件日志 151 实例106 使用EventLog组件保存Windows系统日志 153 实例107 使用EventLog组件向本机现有日志中添加条目 155 3.4 FileSystemWatcher组件 156 实例108 使用...

    C#程序开发范例宝典(第2版).part02

    实例105 使用EventLog组件读写Windows系统事件日志 151 实例106 使用EventLog组件保存Windows系统日志 153 实例107 使用EventLog组件向本机现有日志中添加条目 155 3.4 FileSystemWatcher组件 156 实例108 使用...

Global site tag (gtag.js) - Google Analytics