- 浏览: 438837 次
- 性别:
- 来自: 唐山
文章分类
最新评论
-
hautbbs:
谢谢分享!
ASP.NET 导出Excel 和csv -
hautbbs:
感谢分享!
ASP.NET 导出Excel乱码的终极解决 -
wyf:
zcl920 写道只能说 看不懂。要发就发全 取一段出来 有什 ...
图片上绘制文字换行处理 -
zcl920:
只能说 看不懂。要发就发全 取一段出来 有什么用。
图片上绘制文字换行处理 -
380086154:
有用,谢谢。
js比较日期
public static class DomainInformation { #region Constants //static string[] usersLdapPath = @"http://www.cnblogs.com/yxbsmx/admin/ldap://zzzzzz.com/OU=xxxxxx,DC=yyyyyy,DC=com"; static string usersLdapPath = System.Configuration.ConfigurationManager.AppSettings["LDAPConnectionString"].ToString() ; const string adLoginName = "zzzzzz.com\\administrator"; //管理员用户 //或者上面写成 const string adLoginName =@ "zzzzzz.com\administrator"; //或者const string adLoginName = "administrator@zzzzzz.com"; const string adLoginPassword = "88888888"; #endregion static public string[] GetGroupsForUser(string domainADsPath, string username)// 获取用户所属组 { DirectoryEntry usersDE = Directoryunits(domainADsPath); DirectorySearcher ds = new DirectorySearcher(usersDE); ds.Filter = "(&(sAMAccountName=" + username + "))"; ds.PropertiesToLoad.Add("memberof"); SearchResult r = ds.FindOne(); if (r.Properties["memberof"].Count == 0) { return (null); } string[] results = new string[r.Properties["memberof"].Count]; for (int i = 0; i < r.Properties["memberof"].Count; i++) { string theGroupPath = r.Properties["memberof"][i].ToString(); results[i] = theGroupPath.Substring(3, theGroupPath.IndexOf(",") - 3); } usersDE.Close(); return (results); } /// <summary> /// </summary> /// <param name="username"></param> /// <returns></returns> public static string[] GetGroupsForUser(string username) { DirectoryEntry usersDE = DomainInformation.Directory(); DirectorySearcher ds = new DirectorySearcher(usersDE); ds.Filter = "(&(sAMAccountName=" + username + "))"; ds.PropertiesToLoad.Add("memberof"); SearchResult r = ds.FindOne(); if (r.Properties["memberof"] == null) { return (null); } string[] results = new string[r.Properties["memberof"].Count+1]; for (int i = 0; i < r.Properties["memberof"].Count; i++) { string theGroupPath = r.Properties["memberof"][i].ToString(); results[i] = theGroupPath.Substring(3, theGroupPath.IndexOf(",") - 3); } results[r.Properties["memberof"].Count]="All";//All组属于任何人,在AD之外定义了一个组,以便分配用户权限 usersDE.Close(); return (results); } static public string[] GetUsersForGroup(string domainADsPath, string Groupname)// 获取用户 { DirectoryEntry usersDE = Directoryunits(domainADsPath); DirectorySearcher ds = new DirectorySearcher(usersDE); ds.Filter = "(&(objectClass=group)(cn=" + Groupname + "))"; ds.PropertiesToLoad.Add("member"); SearchResult r = ds.FindOne(); if (r.Properties["member"] == null) { return (null); } string[] results = new string[r.Properties["member"].Count]; for (int i = 0; i < r.Properties["member"].Count; i++) { string theGroupPath = r.Properties["member"][i].ToString(); results[i] = theGroupPath.Substring(3, theGroupPath.IndexOf(",") - 3); } usersDE.Close(); return (results); } static public string GetUserDisplayName(string username)// 获取组用户 { string results; DirectoryEntry usersDE = Directory(); DirectorySearcher ds = new DirectorySearcher(usersDE); ds.Filter = "(&(objectClass=user)(sAMAccountName=" + username + "))"; ds.PropertiesToLoad.Add(UserProperty.DisplayName); SearchResult r = ds.FindOne(); results = r.GetDirectoryEntry().InvokeGet(UserProperty.DisplayName).ToString(); usersDE.Close(); return (results); } static public UserInfoEx GetUserInfoEx(string username) //获取域用户详细信息 { DirectoryEntry usersDE =Directory(); DirectorySearcher ds = new DirectorySearcher(usersDE); ds.Filter = "(&(objectClass=user)(objectCatogery=person)(sAMAccountName=" + username + "))"; ds.PropertiesToLoad.Add("cn"); ds.PropertiesToLoad.Add(UserProperty.Name); ds.PropertiesToLoad.Add(UserProperty.UserName); ds.PropertiesToLoad.Add(UserProperty.homePhone); ds.PropertiesToLoad.Add(UserProperty.FirstName); ds.PropertiesToLoad.Add(UserProperty.LastName); ds.PropertiesToLoad.Add(UserProperty.Email); ds.PropertiesToLoad.Add(UserProperty.Title); ds.PropertiesToLoad.Add(UserProperty.Company); ds.PropertiesToLoad.Add(UserProperty.Address); ds.PropertiesToLoad.Add(UserProperty.City); ds.PropertiesToLoad.Add(UserProperty.State); ds.PropertiesToLoad.Add(UserProperty.PostalCode); ds.PropertiesToLoad.Add(UserProperty.Phone); ds.PropertiesToLoad.Add(UserProperty.Country); SearchResult r = ds.FindOne(); UserInfoEx result = new UserInfoEx(); result.Name = r.GetDirectoryEntry().InvokeGet(UserProperty.Name).ToString(); result.LoginName = r.GetDirectoryEntry().InvokeGet(UserProperty.UserName).ToString(); if (r.GetDirectoryEntry().InvokeGet(UserProperty.FirstName) != null) { result.FirstName = r.GetDirectoryEntry().InvokeGet(UserProperty.FirstName).ToString(); } else { result.FirstName = ""; } if (r.GetDirectoryEntry().InvokeGet(UserProperty.homePhone) != null) { result.homePhone = r.GetDirectoryEntry().InvokeGet(UserProperty.homePhone).ToString(); } else { result.homePhone = ""; } if (r.GetDirectoryEntry().InvokeGet(UserProperty.LastName)!= null) { result.LastName = r.GetDirectoryEntry().InvokeGet(UserProperty.LastName).ToString(); } else { result.LastName = ""; } if (r.GetDirectoryEntry().InvokeGet(UserProperty.Email) != null) { result.EmailAddress = r.GetDirectoryEntry().InvokeGet(UserProperty.Email).ToString(); } else { result.EmailAddress = ""; } if (r.GetDirectoryEntry().InvokeGet(UserProperty.Title) != null) { result.Title = r.GetDirectoryEntry().InvokeGet(UserProperty.Title).ToString(); } else { result.Title = ""; } if (r.GetDirectoryEntry().InvokeGet(UserProperty.Company) != null) { result.Company =r.GetDirectoryEntry().InvokeGet(UserProperty.Company).ToString(); } else { result.Company = ""; } if (r.GetDirectoryEntry().InvokeGet(UserProperty.Address) != null) { result.Address =r.GetDirectoryEntry().InvokeGet(UserProperty.Address).ToString(); } else { result.Address = ""; } if (r.GetDirectoryEntry().InvokeGet(UserProperty.City) != null) { result.City =r.GetDirectoryEntry().InvokeGet(UserProperty.City).ToString(); } else { result.City = ""; } if (r.GetDirectoryEntry().InvokeGet(UserProperty.State) != null) { result.State =r.GetDirectoryEntry().InvokeGet(UserProperty.State).ToString(); } else { result.State = ""; } if (r.GetDirectoryEntry().InvokeGet(UserProperty.PostalCode) != null) { result.PostalCode =r.GetDirectoryEntry().InvokeGet(UserProperty.PostalCode).ToString(); } else { result.PostalCode = ""; } if (r.GetDirectoryEntry().InvokeGet(UserProperty.Phone) != null) { result.Phone = r.GetDirectoryEntry().InvokeGet(UserProperty.Phone).ToString(); } else { result.Phone = ""; } if (r.GetDirectoryEntry().InvokeGet(UserProperty.Country) != null) { result.Country =r.GetDirectoryEntry().InvokeGet(UserProperty.Country).ToString(); } else { result.Country = ""; } usersDE.Close(); return (result); } static private string GetAdGroupDescription(string prefix)//根据CN获取组description { string results; DirectoryEntry groupsDE = Directory(); DirectorySearcher groupsDS = new DirectorySearcher(groupsDE); groupsDS.Filter = "(&(objectClass=group)(CN=" + prefix + "*))"; groupsDS.PropertiesToLoad.Add("cn"); SearchResult sr = groupsDS.FindOne(); results = sr.GetDirectoryEntry().InvokeGet("description").ToString(); groupsDE.Close(); return (results); } static private DataTable GetAdGroupInfo()//根据CN获取组信息 { DataTable dt = new DataTable(); dt.Columns.Add("URL", typeof(System.String)); dt.Columns.Add("cn", typeof(System.String)); dt.Columns.Add("Description", typeof(System.String)); DirectoryEntry groupsDE = Directory(); DirectorySearcher searcher = new DirectorySearcher(groupsDE); searcher.Filter = "(&(objectClass=group))"; //searcher.SearchScope = SearchScope.Subtree; //searcher.Sort = new SortOption("description", System.DirectoryServices.SortDirection.Ascending); searcher.PropertiesToLoad.AddRange(new string[] { "cn", "description"}); SearchResultCollection results = searcher.FindAll(); if (results.Count == 0) { return (null); } else { foreach (SearchResult result in results) { DataRow dr = dt.NewRow(); dr[0] = result.Path.ToString(); dr[1] = result.GetDirectoryEntry().InvokeGet("cn").ToString(); if (result.GetDirectoryEntry().InvokeGet("Description")!=null) dr[2] = result.GetDirectoryEntry().InvokeGet("Description").ToString(); else dr[2] = result.GetDirectoryEntry().InvokeGet("cn").ToString(); dt.Rows.Add(dr); } dt.DefaultView.Sort = "description ASC"; groupsDE.Close(); return dt; } } static public string getAccountName(string cn) //根据CN获取登陆名 { foreach (string path in usersLdapPath) { DirectoryEntry userContainerDE = Directoryunits(path); DirectorySearcher ds = new DirectorySearcher(userContainerDE); ds.Filter = "(&(objectClass=user)(cn=*" + cn + "*))"; ds.PropertiesToLoad.Add("sAMAccountName"); SearchResult r = ds.FindOne(); if (r!=null) return r.GetDirectoryEntry().InvokeGet("sAMAccountName").ToString(); } return null; } static public bool isAdUser(string username)//判断是否域用户 { DirectoryEntry userContainerDE = Directory(); DirectorySearcher ds = new DirectorySearcher(userContainerDE); ds.Filter = "(&(objectClass=user)(sAMAccountName=" + username + "))"; ds.PropertiesToLoad.Add("cn"); SearchResult r = ds.FindOne(); if (r == null) { userContainerDE.Close(); return false; } else { userContainerDE.Close(); return true; } } static public DataTable adUserlist( string groupname) //生成用户数据表 { DataTable dt = new DataTable(); dt.Columns.Add("cn", typeof(System.String)); dt.Columns.Add("sAMAccountName", typeof(System.String)); string[] groupmember = GetUsersForGroup(usersLdapPath[0], groupname); if (groupmember.Length == 0) { return null; } else { foreach (string member in groupmember) { if(IsAccountActive(getAccountControl(getAccountName(member)))) { DataRow dr = dt.NewRow(); dr[0] = member.ToString(); dr[1] = getAccountName(member); dt.Rows.Add(dr); } } return dt; } } static public void adUserlistbox(ListBox results, string groupName) //生成USER { results.Items.Clear(); DataTable dt = adUserlist(groupName); if (dt != null) { results.DataSource = dt; results.DataTextField = dt.Columns[0].Caption; results.DataValueField = dt.Columns[1].Caption; results.DataBind(); } } static public void adGrouplistbox(ListBox results) { results.Items.Clear(); DataTable dt = GetAdGroupInfo(); DataRow dr = dt.NewRow(); dr[1] = "All"; dr[2] = "All"; dt.Rows.Add(dr); results.DataSource = dt; results.DataTextField = dt.Columns[2].Caption; results.DataValueField = dt.Columns[1].Caption; results.DataBind(); } static public void aduserGrouplist(DropDownList results) { results.Items.Clear(); DataTable dt = GetAdGroupInfo(); results.DataSource = dt; results.DataTextField = dt.Columns[2].Caption; results.DataValueField = dt.Columns[1].Caption; results.DataBind(); } static public DirectoryEntry Directory() { DirectoryEntry userContainerDE; string accountName = UserProperty.getAccountName().ToString(); accountName = accountName.Substring(0, accountName.IndexOf("\\")).Trim(); //判断登陆用户是否为域用户,"zzzzzz"为域名,域名用户格式:zzzzzz/username if (accountName.ToLower() != "zzzzzz") userContainerDE = new DirectoryEntry(usersLdapPath, adLoginName, adLoginPassword); // AuthenticationTypes.Secure);} else userContainerDE = new DirectoryEntry(usersLdapPath);//, adLoginName, adLoginPassword); return userContainerDE; } static public DirectoryEntry Directoryunits(string ldappath ) { DirectoryEntry userContainerDE; string accountName = UserProperty.getAccountName().ToString(); accountName = accountName.Substring(0, accountName.IndexOf("\\")).Trim(); // userContainerDE = new DirectoryEntry(ldappath); if (accountName.ToLower() != "zzzzzz" ) //userContainerDE.Username = adLoginName; //userContainerDE.Password = adLoginPassword; //userContainerDE.AuthenticationType = AuthenticationTypes.Secure; userContainerDE = new DirectoryEntry(ldappath, adLoginName, adLoginPassword);// AuthenticationTypes.Secure);} else userContainerDE = new DirectoryEntry(ldappath);//, adLoginName, adLoginPassword); return userContainerDE; } public static int getAccountControl(string accountName)//获取权限码 { int results; DirectoryEntry userContainerDE = Directory(); DirectorySearcher ds = new DirectorySearcher(userContainerDE); ds.Filter = "(&(objectClass=user)(sAMAccountName=" + accountName + "))"; ds.PropertiesToLoad.Add("userAccountControl"); try { SearchResult r = ds.FindOne(); results = Convert.ToInt32(r.GetDirectoryEntry().InvokeGet("userAccountControl")); userContainerDE.Close(); return results; } catch { userContainerDE.Close(); return 0; } } public static bool IsAccountActive(int userAccountControl)//判断是否有效 { int ADS_UF_ACCOUNTDISABLE = 0X0002; int userAccountControl_Disabled = Convert.ToInt32(ADS_UF_ACCOUNTDISABLE); int flagExists = userAccountControl & userAccountControl_Disabled; if (flagExists > 0) return false; else return true; } public static DirectoryEntry GetDirectoryEntryByAccount(string sAMAccountName) { DirectoryEntry de = Directory(); DirectorySearcher deSearch = new DirectorySearcher(de); deSearch.Filter = "(&(objectCategory=person)(objectClass=user)(sAMAccountName=" + sAMAccountName + "))"; // deSearch.SearchScope = SearchScope.Subtree; try { SearchResult result = deSearch.FindOne(); //if (result == null) //{ return null; } de = Directoryunits(result.Path); return de; } catch { //throw; return null; } } public static DirectoryEntry GetDirectoryEntryByAccount(string sAMAccountName, string password) { DirectoryEntry de = GetDirectoryEntryByAccount(sAMAccountName); if (de != null) { // string commonName = de.Properties["cn"][0].ToString(); if (GetDirectoryEntry(sAMAccountName, password) != null) return GetDirectoryEntry(sAMAccountName, password); else return null; } else { return null; } } public static DirectoryEntry GetDirectoryEntry(string sAMAccountName, string password) { try { DirectoryEntry userde = new DirectoryEntry(usersLdapPath, sAMAccountName, password, AuthenticationTypes.Secure); DirectorySearcher deSearch = new DirectorySearcher(userde); deSearch.Filter = "(&(objectCategory=person)(objectClass=user)(sAMAccountName=" + sAMAccountName + "))"; //deSearch.SearchScope = SearchScope.Subtree; try { SearchResult result = deSearch.FindOne(); userde = Directoryunits(result.Path); return userde; } catch { //throw; return null; } } catch (Exception ex) { throw new Exception(ex.Message); } } }
发表评论
-
登录时记住用户名密码的实现方式
2019-06-12 15:11 3049登录的时候记住用户 ... -
CAS 实现单点登录 .NET MVC
2016-05-24 17:14 1143http://www.cnblogs.com/woxpp/p ... -
.NET开发邮件发送功能的全面教程(含邮件组件源码)
2015-03-31 09:43 1179原文地址:http://www.cnblogs.com/he ... -
开发Web组合
2015-01-04 11:39 6231、数据库操作 ORM-Dapper 2、前台界面布局采 ... -
基于 Bootstrap 构建的网站
2014-12-14 14:12 648文档,下载地址:http://v3.bootcss.com ... -
iis8 默认不支持svc解决方法
2014-09-18 18:57 788以下内容对于使用WIN2012 部署V9的时候使用。 ... -
C# 连接Oracle(利用ODP.net,不安装oracle客户端)
2014-07-11 09:37 1705C# 连接Oracle(利用ODP.net,不安装oracl ... -
C# Attribute 特性,过期特性
2014-05-27 15:18 1865通过下列过程将属性应用到代码元素。 通过从 .NE ... -
.NET画实时直方图
2011-12-30 09:37 933using System; using System.Col ... -
设置combobx选中项
2011-12-21 15:20 1049cbRole.SelectedIndex = cbRole.I ... -
文档树状结构化目录管理方法
2011-12-20 09:50 2224本文适用于附件(各类文档、图片和压缩包等,下同)比较多的 ... -
.StringTemplate替换模板
2011-11-03 10:19 1259官方下载 www.StringTemplate. ... -
WCF-IErrorHandler
2011-10-11 16:30 1075使用 IErrorHandler 接口,我们可以更深入地 ... -
ADODB.Stream instead of Scripting.FileSystemObject.
2011-07-04 08:55 1255In a Silverlight 4 OOB App (eve ... -
Scripting.FileSystemObject对象的详细技巧指南
2011-07-03 23:39 1058Scripting.FileSystemObject对象的 ... -
Stream 和 byte[] 之间的转换
2011-07-02 16:52 1089/* - - - - - - - - - - - - - ... -
常用正则表达式
2011-06-15 20:17 803正则表达式用于字符 ... -
DynamicMethod 类
2011-05-11 22:51 1175public delegate String MyMetho ... -
一个通用的快速反射方法(A General Fast Method Invoker)
2011-04-13 22:01 1543普通反射方法 MethodInfo methodIn ... -
C#操作IIS(转)可以写一个工具自己配置网站
2011-03-24 21:08 2275using System; using System.Dir ...
相关推荐
2. **引用AD操作类**: 在C#中,操作AD主要使用`System.DirectoryServices`命名空间下的类,例如`DirectoryEntry`和`DirectorySearcher`。首先需要在项目中引入这个命名空间。 3. **连接AD**: 连接到AD服务器的...
在IT领域,特别是企业级应用开发中,"C# AD域验证"是一个常见的主题,它涉及到Windows活动目录(Active Directory, AD)与C#编程语言的集成。活动目录是Microsoft提供的一种目录服务,用于管理网络资源,如用户、...
例如,你可以用EasyUI创建一个管理界面,用户可以在界面上输入信息,然后调用上述的C#方法执行AD操作。 总结来说,C#在ASP.NET中处理AD域用户操作是一项重要的技能,涵盖了用户认证、创建和删除等功能。结合EasyUI...
Active Directory(AD)是一种目录服务,由微软公司开发,用于在 Windows 操作系统中管理和存储用户、组、计算机和其他对象的信息。它提供了一个集中化的身份验证和授权机制,使得管理员可以更方便地管理网络中的...
活动目录辅助类。封装一系列活动目录操作相关的方法。包括用户登录验证及用户帐户属性修改等相关操作的方法
在IT领域,活动目录(Active Directory,简称AD)是一种用于管理网络资源的分布式数据库系统,由微软开发。在Windows服务器操作系统中,AD是组织、存储和管理用户、计算机、网络服务和其他对象的主要工具。本篇文章...
新版AD操作处理类 【ASP.NET组资源】新版AD操作处理类 关于ASP.NET如何获取AD中的详细用户信息等方法的实现。其中主要依托CLR:DirectoryServices. ** File Name: AdHandler.cs ** Creator: ** Create date: ** ...
在IT领域,Active Directory(AD)是微软提供的一种目录服务,用于管理网络资源,而C#作为.NET框架下的主要编程语言,提供了丰富的类库来与AD进行...结合LDAP协议,可以更深入地理解和控制AD操作,从而提高工作效率。
此外,确保对AD操作进行适当的权限控制,防止未授权的访问。 总之,C#通过`System.DirectoryServices`提供了一套强大且灵活的工具,可以轻松地读取AD域中的用户名和组信息。开发者可以根据具体需求,利用这些工具...
在IT领域,特别是Windows域...总的来说,C#同步AD的数据涉及到的技能点包括AD架构的理解、.NET AD操作API的使用、查询设计以及数据处理逻辑。这个过程对于构建依赖AD的系统或应用,确保数据准确性和安全性至关重要。
AD域 OU及用户增加、删除、修改通用类库文件,其他分要的很贵,我下载了分享给大家,密码123456 希望对各位有用
C#提供了一套名为System.DirectoryServices的命名空间,该命名空间包含了处理AD操作所需的类和方法,如DirectoryEntry和DirectorySearcher。 **1. 使用DirectoryEntry进行连接:** DirectoryEntry对象代表AD中的一...
本教程将详细讲解如何使用C#语言读取当前登录账户的信息,通过 LDAP 连接查询AD中的其他相关信息,并将这些信息写入到系统注册表中。 首先,让我们理解什么是AD和LDAP。Active Directory 是微软提供的一个目录服务...
在IT领域,特别是Windows系统管理和开发中,Active Directory(AD)是用于组织和管理网络资源...在理解和掌握这些基本原理后,可以灵活地扩展到其他AD操作,如添加、删除、修改用户或组,以及更复杂的查询和权限管理。
在IT行业中,活动目录(Active Directory,简称AD)是微软提供的一个重要的身份验证和资源管理服务,用于组织和管理网络中的用户、计算机和其他资源。在Windows操作系统环境下,C#编程语言提供了一种强大的方式来与...
在提供的代码片段中,`ADHelper` 类封装了与活动目录相关的操作,使得对AD域用户的管理变得更加方便。下面我们将详细探讨这个类中的关键知识点。 1. **ADHelper 类结构**: `ADHelper` 是一个静态密封类,这意味着...
我们将基于提供的标题“c# 操作 RFID 示例1”以及描述中提及的Visual Studio 2010环境,来阐述RFID系统的基本原理、C#中的相关API及其实现步骤。 首先,理解RFID系统的基本构成至关重要。一个完整的RFID系统通常...
总之,C#提供了强大的工具来处理与Active Directory相关的任务,通过理解和熟练使用`System.DirectoryServices`,开发者能够轻松地获取和操作域内的各种信息,包括用户、组和组织单元,为企业的IT管理带来便利。