`
wumingdlz
  • 浏览: 32484 次
  • 性别: 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# 获取域 用户 组 信息

    在C#代码中,我们通常会使用`DirectoryEntry`对象来代表AD的对象,如域、用户或组,而`DirectorySearcher`则用于搜索AD中的对象。 要获取域所有信息,首先需要创建一个`DirectoryEntry`实例,指定AD的根目录,例如`...

    .net c#域操作工具类

    域操作类是.NET开发人员处理活动目录(Active Directory)时经常会用到的一种工具,它提供了对域用户、组、计算机等对象的管理功能。本文将详细介绍".net c#域操作工具类"的相关知识点。 首先,了解什么是域。在...

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

    在Windows系统中,我们可以使用`DirectoryEntry`类来实现这一功能,该类是.NET Framework中的System.DirectoryServices命名空间的一部分,允许我们与活动目录(Active Directory)或本地机器的SAM(安全账户管理器)...

    ldap连接测试工具源代码C#版

    这通常涉及到使用DirectoryEntry和DirectorySearcher类来执行搜索操作。 2. **域结构探索**:该工具可以帮助开发者或管理员查看和理解域的层次结构,包括组织单元(OU)、域控制器、用户组等。这可能涉及到递归遍历...

    C#操作windows域接口详解System.DirectoryServices

    通过本文档的学习,您应该对如何使用C#中的`System.DirectoryServices`命名空间进行Windows域的操作有了较为全面的理解。无论是创建新用户、修改现有用户信息还是查询用户信息,都能够得心应手。当然,在实际应用中...

    C#创建删除修改Windows用户

    在C#编程中,我们可以利用System.DirectoryServices命名空间中的DirectoryEntry和DirectorySearcher类来管理Windows用户和用户组。这些类是通过活动目录服务接口(ADSI)与Windows操作系统进行交互,实现对本地用户...

    C#读取AD域的组织结构和用户

    总的来说,使用C#与AD域进行交互是通过System.DirectoryServices命名空间的类实现的,包括DirectoryEntry、DirectorySearcher等,可以方便地读取组织结构和用户信息。实际开发时,需要根据具体需求调整代码,如搜索...

    C#读取本地用户 C#读取本地用户

    例如,可以使用`DirectoryEntry`类来创建一个指向`WinNT://.`的引用,从而访问本地计算机的用户账户。 3. **`System.Security.Principal`命名空间**:这个命名空间包含了处理Windows安全主体(如用户、组)的类。...

    C#创建windows用户并分配其权限

    本篇文章将详细介绍如何使用C#语言实现Windows用户及其权限的自动化管理。 #### 一、创建Windows用户 在C#中,可以利用`System.DirectoryServices`命名空间中的类来实现对Windows用户的创建。具体实现步骤如下: ...

    C#管理window账号

    在C#中,我们可以通过DirectoryEntry对象来访问和操作Windows用户账户、组和其他AD对象。它允许开发者查询、修改和创建AD对象,如执行账号查询和密码修改。 2. **账号查询**:在项目中,实现了查询Windows账户的...

    C# 读取当前账户,然后查出AD中其他的相关信息,并写到注册表里面

    5. 使用Registry类和RegistryKey类操作Windows注册表,存储查询到的信息。 注意:在实际操作中,务必处理可能的异常,并确保拥有足够的权限进行AD查询和修改注册表。在生产环境中,这些操作应遵循安全最佳实践,...

    c#AD域信息读取工具源码

    C#提供了一套名为System.DirectoryServices的命名空间,该命名空间包含了处理AD操作所需的类和方法,如DirectoryEntry和DirectorySearcher。 **1. 使用DirectoryEntry进行连接:** DirectoryEntry对象代表AD中的一...

    C#读取AD域里用户名或组

    在IT行业中,Active Directory(AD)域是一种身份验证和授权服务,广泛应用于Windows网络环境,用于管理和控制用户、计算机和其他网络资源。C#作为.NET框架的主要编程语言,提供了丰富的类库来与AD域进行交互。本篇...

    C#AD(活动目录)操作

    2. **引用AD操作类**: 在C#中,操作AD主要使用`System.DirectoryServices`命名空间下的类,例如`DirectoryEntry`和`DirectorySearcher`。首先需要在项目中引入这个命名空间。 3. **连接AD**: 连接到AD服务器的...

    C#AatviveDirectory操作源码

    本篇文章将深入探讨如何使用C#进行Active Directory操作,以及通过提供的源码来理解和学习相关技术。 首先,我们要了解C#与AD交互的基本概念。C#通过System.DirectoryServices命名空间中的类来访问和管理AD。主要...

    C#读取AD域里用户名或组.rar

    在实际应用中,可能还需要处理权限问题,比如使用匿名连接或指定管理员账户。此外,为了优化性能,可以设置DirectorySearcher的PropertiesToLoad集合,只加载需要的属性,减少数据传输量。 总的来说,通过C#和...

    C#创建IIS站点,C#在2003系统创建站点

    这通常涉及到使用System.DirectoryServices和System.DirectoryServices.AccountManagement命名空间中的类,如DirectoryEntry和DirectorySearcher,它们允许我们以编程方式操作Active Directory服务,包括管理IIS站点...

    C#.NET LDAPSearch

    4. **LDAPSearch**:在C#.NET中,进行LDAP搜索通常涉及使用System.DirectoryServices命名空间中的类,如`DirectoryEntry`和`DirectorySearcher`。`DirectoryEntry`用于连接到LDAP服务器,而`DirectorySearcher`则...

    c#.net域用户验证代码

    总的来说,C#.NET中的域用户验证涉及到对Windows域的理解、DirectoryServices命名空间的使用,以及安全性最佳实践的遵循。在实际开发中,不仅要确保代码功能的正确性,还要关注性能和安全性,以保护系统的整体安全。

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

    在C#编程中,对Windows用户和组进行操作是常见的任务,这主要涉及到系统管理和权限控制。本实例展示了如何使用C#的`System.DirectoryServices`命名空间中的类来实现这些功能。下面我们将详细讨论以下几个方面: 1. ...

Global site tag (gtag.js) - Google Analytics