.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();
}
分享到:
相关推荐
本文将深入探讨如何使用C#编程语言在ASP.NET环境中对AD域用户进行操作,包括认证、创建和删除等关键功能。 首先,进行AD用户认证是确保网络安全的重要环节。在ASP.NET应用中,C#可以借助System.DirectoryServices...
总的来说,C# AD域验证是Windows环境下实现统一身份认证的重要手段,它简化了对大量用户的管理和权限控制。理解并掌握这一技术对于开发企业级应用的C#开发者来说至关重要。通过学习和实践,你可以创建更加安全、高效...
在C#编程环境中,开发Windows 10原生系统通知,即Toast通知,是一种与用户交互的有效方式。这种通知能够直接出现在操作系统的任务栏通知区域,吸引用户的注意力,并且允许用户进行点击或者其他交互操作。本篇文章将...
本文将深入探讨如何使用C#编程语言来读取AD域中的组织结构和用户信息。C#提供了丰富的类库,如System.DirectoryServices命名空间,使得与AD进行交互变得相对简单。 首先,我们需要理解AD的组织结构。AD域是基于树形...
使用C#获取WINDOWS系统的图标--DEMO
"CloseWindow 1.00"显然是一款用C#编写的工具,主要用于处理和操作Windows系统中的窗口。这款工具提供了获取、打开、关闭窗口以及执行其他相关操作的功能。下面将详细介绍这个主题中的相关知识点。 1. **C#基础**:...
C#,获取与设置Windows背景图片的源代码。为了满足孩子们个性化桌面的需求。桌面背景 Windows 7包含了大量新的桌面背景,从壮丽景观到乡村风情。用户也可以自己添加喜欢的图片。Windows 7包含了大量新的桌面背景,从...
在本文中,我们将深入探讨如何使用C#编程语言和Windows API来实现切换系统默认音频设备的功能。这个功能在多媒体应用、在线会议软件或者游戏开发中非常常见,它允许用户快速改变声音输出源,以适应不同的使用场景。 ...
总之,C#调用Windows API进行摄像头操作虽然涉及较多底层细节,但通过合理的封装和抽象,可以使代码保持清晰和易于维护。在实际项目中,还可以考虑使用第三方库如AForge.NET或Emgu CV,它们提供了更高级别的接口,...
### C# 创建 Windows 服务:...总之,通过以上步骤,我们可以成功地使用 C# 创建出一个可以实现系统定时重启功能的 Windows 服务。这不仅有助于提高系统的稳定性和可用性,还能减少人工干预的需求,从而提高工作效率。
C#作为.NET框架的主要编程语言,提供了丰富的类库来与Active Directory(AD)进行交互,从而获取和操作域用户、用户组以及组织单元(OU)等信息。本篇文章将详细探讨如何使用C#来实现这一目标。 首先,我们需要引入...
为《使用C# 完美实现多语言版本Windows应用程序》所附源代码,以便更好的学习C#窗体程序多语言版本的制作。 本源代码可以任何方式免费使用,但转载请注明出处 另:代码中仅处理资源,没有本地格式信息的处理,有这...
【C# WinForm仿Windows资源管理器DEMO详解】 C# WinForm仿Windows资源管理器DEMO是一个基于C#编程语言和Windows Forms框架构建的小型应用程序,旨在为开发者提供一个模仿真实Windows资源管理器功能的示例代码。这个...
本篇文章将详细介绍如何使用C#和.NET框架进行AD域操作,包括读取用户和组信息、创建与删除用户和组,以及移动用户到组等功能。 首先,进行AD域操作前,需要引用System.DirectoryServices命名空间,通过...
本文将深入探讨如何使用C#来构建一个高度仿真的Windows图片浏览器,该浏览器不仅在功能上能够满足用户的基本需求,而且在用户体验上也力求接近原生系统的效果。 首先,我们要理解“高仿”意味着对用户界面(UI)的...
利用 Windows API 32 中打印函数,对打印机进行发送打印任务、暂停、取消、获取打印任务、获取打印机列表、状态、纸张等信息。压缩包中包含4个平时收集的打印类,测试均可用。附含Windows API 函数 for Visual Basic...
总的来说,这个C#截屏程序项目涵盖了图形处理、用户交互、文件操作和网络通信等多个方面,对于初学者来说,这是一个很好的实践项目,能帮助他们深入理解和应用C#语言。同时,对于有经验的开发者,它也是一个快速构建...
C# 开机启动服务(windows service) 本程序用ASP.NET C#开发,不针对系统版本限制。 本源码拿就来可以直接写您想要的服务,无需再改其它的代码,拿来主义是不是很好?例如订单服务。 本服务是100%源码,源码中包含: ...
在本项目中,"C#管理window账号"是针对Windows操作系统中的账户管理功能进行的一次自定义开发,以解决Windows SharePoint Services (WSS) 在OA(办公自动化)系统中缺乏用户管理功能的问题。以下是对这个项目涉及的...
标题 "c#写的类似windows文件查询搜索" 描述了使用C#编程语言开发的一个Windows桌面应用程序,该程序的用户界面设计灵感来源于Windows操作系统中的资源管理器,具备文件查询和搜索功能。这一项目的核心目标是为用户...