`
csyqbtlsz
  • 浏览: 24637 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用C#操作WindowAD之Windows用户

    博客分类:
  • C#
阅读更多

.net对ladp操作windowsAD的一些类和接口,都放在System.DirectoryServices命名空间下面。

 

public void CreateWindowsUser(String userName,String password,String userDesc,int userControl)
{
     String ladpRootPath = "LDAP://192.168.213.168/CN=Users,DC=pk1,DC=cctv,DC=com";
     DirectoryEntry ladpRoot = new DirectoryEntry(ladpRootPath);
     ladpRoot.Username = "XXXXX";
     ladpRoot.Password = "XXXXX";
     DirectoryEntry user = ladpRoot.Children.Add("CN="+ userName, "user");
     user.Properties["sAMAccountName"].Value = userName;
     user.Properties["description"].Value = userDesc;
     user.Properties["userAccountControl"].Value = userControl;
     user.CommitChanges();
     user.Invoke("SetPassword", password);
     user.CommitChanges();
     user.Close();
}
 

上述方法简单实现了添加一个Windows用户,值得注意的是如果你的程序是放在域控上面执行的,那么 ladpRoot.Username和ladpRoot.Password就不能赋值。另外ladpRootPath是ladp的路径写法,LDAP://192.168.213.168表示你要操作的主机地址, DC=pk1,DC=cctv,DC=com表示要操作的Windows域,CN=Users表示在windows域的主目录下的Users容器对象。方法参数userControl表示一些用户属性,如密码永不过期,禁用用户等等,具体的值,详见http://support.microsoft.com/kb/305144/zh-cn,如果用户包含多个属性,则将这些属性值做按位或(|)的运算即可。在这些用户属性中,有一个比较例外,那就是PASSWD_CANT_CHANGE,此属性表示用户不能修改密码,但是他是一个只读的属性,也就是说不能通过设置userAccountControl来实现功能,如果要实现此功能,那么必须在上述代码 user.Close();之前插入如下代码:

 

 Guid changePasswordGuid = new Guid("{ab721a53-1e2f-11d0-9819-00aa0040529b}");
 IdentityReference selfSddl = new SecurityIdentifier(WellKnownSidType.SelfSid, null); 
 IdentityReference everyoneSddl = new SecurityIdentifier(WellKnownSidType.WorldSid, null); 
 ActiveDirectoryAccessRule selfAccRule = new ActiveDirectoryAccessRule(selfSddl, ActiveDirectoryRights.ExtendedRight, AccessControlType.Deny, changePasswordGuid);
 ActiveDirectoryAccessRule everyoneAccRule = new ActiveDirectoryAccessRule(everyoneSddl, ActiveDirectoryRights.ExtendedRight, AccessControlType.Deny, changePasswordGuid);
 user.ObjectSecurity.AddAccessRule(selfAccRule);
 user.ObjectSecurity.AddAccessRule(everyoneAccRule);
 user.CommitChanges();

 

下面给出一些常用的用户操作代码:

 

修改用户:

 

public void ModifyWindowsUser(String userName,String password,String userDesc,int userControl)
{
     String ladpRootPath = "LDAP://192.168.213.168/CN=Users,DC=pk1,DC=cctv,DC=com";
     DirectoryEntry ladpRoot = new DirectoryEntry(ladpRootPath);
     ladpRoot.Username = "XXXXX";
     ladpRoot.Password = "XXXXX";
     DirectoryEntry user = ladpRoot.Children.Find("CN=" +userName, "user");
     user.Properties["description"].Value = userDesc;
     user.Properties["userAccountControl"].Value = userControl;
     user.CommitChanges();
     user.Invoke("SetPassword", password);
     user.CommitChanges();
     user.Close();
}
 

 

删除用户

 

 

public void DeleteWindowsUser(String userName)
{
     String ladpRootPath = "LDAP://192.168.213.168/CN=Users,DC=pk1,DC=cctv,DC=com";
     DirectoryEntry ladpRoot = new DirectoryEntry(ladpRootPath);
     ladpRoot.Username = "XXXXX";
     ladpRoot.Password = "XXXXX";
     DirectoryEntry user = ladpRoot.Children.Find("CN=" +userName, "user");
     user.DeleteTree();
     user.Close();
}
 

 

 

 

 

 

 

 

 

0
2
分享到:
评论

相关推荐

    C#windows编程

    《C# Windows编程》这本书是针对使用C#语言进行Windows应用程序开发的专业指南。它涵盖了从基础知识到高级技术的全面内容,旨在帮助读者掌握利用C#在Windows平台上构建高效、稳定和用户友好的应用程序的技能。 在C#...

    详解C#使用AD(Active Directory)验证内网用户名密码

    Active Directory(AD)是一种目录服务,由微软公司开发,用于在 Windows 操作系统中管理和存储用户、组、计算机和其他对象的信息。它提供了一个集中化的身份验证和授权机制,使得管理员可以更方便地管理网络中的...

    C# AD 域验证

    总的来说,C# AD域验证是Windows环境下实现统一身份认证的重要手段,它简化了对大量用户的管理和权限控制。理解并掌握这一技术对于开发企业级应用的C#开发者来说至关重要。通过学习和实践,你可以创建更加安全、高效...

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

    本文将深入探讨如何使用C#编程语言来读取AD域中的组织结构和用户信息。C#提供了丰富的类库,如System.DirectoryServices命名空间,使得与AD进行交互变得相对简单。 首先,我们需要理解AD的组织结构。AD域是基于树形...

    c#AD域用户操作代码

    本文将深入探讨如何使用C#编程语言在ASP.NET环境中对AD域用户进行操作,包括认证、创建和删除等关键功能。 首先,进行AD用户认证是确保网络安全的重要环节。在ASP.NET应用中,C#可以借助System.DirectoryServices...

    C# Window10原生系统通知Toast

    在C#编程环境中,开发Windows 10原生系统通知,即Toast通知,是一种与用户交互的有效方式。这种通知能够直接出现在操作系统的任务栏通知区域,吸引用户的注意力,并且允许用户进行点击或者其他交互操作。本篇文章将...

    使用C#获取WINDOWS系统的图标

    使用C#获取WINDOWS系统的图标--DEMO

    CloseWindow 1.00_C#窗口操作_

    "CloseWindow 1.00"显然是一款用C#编写的工具,主要用于处理和操作Windows系统中的窗口。这款工具提供了获取、打开、关闭窗口以及执行其他相关操作的功能。下面将详细介绍这个主题中的相关知识点。 1. **C#基础**:...

    C#,获取与设置Windows背景图片的源代码

    C#,获取与设置Windows背景图片的源代码。为了满足孩子们个性化桌面的需求。桌面背景 Windows 7包含了大量新的桌面背景,从壮丽景观到乡村风情。用户也可以自己添加喜欢的图片。Windows 7包含了大量新的桌面背景,从...

    C#切换windows默认音频设备

    在本文中,我们将深入探讨如何使用C#编程语言和Windows API来实现切换系统默认音频设备的功能。这个功能在多媒体应用、在线会议软件或者游戏开发中非常常见,它允许用户快速改变声音输出源,以适应不同的使用场景。 ...

    C#调用Windows自身的API开发摄像头拍照和摄像功能

    总之,C#调用Windows API进行摄像头操作虽然涉及较多底层细节,但通过合理的封装和抽象,可以使代码保持清晰和易于维护。在实际项目中,还可以考虑使用第三方库如AForge.NET或Emgu CV,它们提供了更高级别的接口,...

    C#创建Windows服务(Windows Services) 实战之系统定时重启服务-程序开发

    ### C# 创建 Windows 服务:...总之,通过以上步骤,我们可以成功地使用 C# 创建出一个可以实现系统定时重启功能的 Windows 服务。这不仅有助于提高系统的稳定性和可用性,还能减少人工干预的需求,从而提高工作效率。

    c# 获取域 用户 组 信息

    C#作为.NET框架的主要编程语言,提供了丰富的类库来与Active Directory(AD)进行交互,从而获取和操作域用户、用户组以及组织单元(OU)等信息。本篇文章将详细探讨如何使用C#来实现这一目标。 首先,我们需要引入...

    C#winform仿windows资源管理器DEMO

    【C# WinForm仿Windows资源管理器DEMO详解】 C# WinForm仿Windows资源管理器DEMO是一个基于C#编程语言和Windows Forms框架构建的小型应用程序,旨在为开发者提供一个模仿真实Windows资源管理器功能的示例代码。这个...

    (源代码)使用C# 完美实现多语言版本Windows应用程序

    为《使用C# 完美实现多语言版本Windows应用程序》所附源代码,以便更好的学习C#窗体程序多语言版本的制作。 本源代码可以任何方式免费使用,但转载请注明出处 另:代码中仅处理资源,没有本地格式信息的处理,有这...

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

    本篇文章将详细介绍如何使用C#和.NET框架进行AD域操作,包括读取用户和组信息、创建与删除用户和组,以及移动用户到组等功能。 首先,进行AD域操作前,需要引用System.DirectoryServices命名空间,通过...

    c#高仿windows图片浏览器

    本文将深入探讨如何使用C#来构建一个高度仿真的Windows图片浏览器,该浏览器不仅在功能上能够满足用户的基本需求,而且在用户体验上也力求接近原生系统的效果。 首先,我们要理解“高仿”意味着对用户界面(UI)的...

    c# 利用Windows API 操作打印机

    利用 Windows API 32 中打印函数,对打印机进行发送打印任务、暂停、取消、获取打印任务、获取打印机列表、状态、纸张等信息。压缩包中包含4个平时收集的打印类,测试均可用。附含Windows API 函数 for Visual Basic...

    C#实现的windows截屏功能

    总的来说,这个C#截屏程序项目涵盖了图形处理、用户交互、文件操作和网络通信等多个方面,对于初学者来说,这是一个很好的实践项目,能帮助他们深入理解和应用C#语言。同时,对于有经验的开发者,它也是一个快速构建...

    C#管理window账号

    在本项目中,"C#管理window账号"是针对Windows操作系统中的账户管理功能进行的一次自定义开发,以解决Windows SharePoint Services (WSS) 在OA(办公自动化)系统中缺乏用户管理功能的问题。以下是对这个项目涉及的...

Global site tag (gtag.js) - Google Analytics