ActiveDirectory学习日记(一)

1:如何获取域中某个组的所有用户

private void Page_Load(object sender, System.EventArgs e)
...{
    StringCollection groupMembers = this.GetGroupMembers("pardesifashions","Debugger Users");
    foreach (string strMember in groupMembers)
    ...{
        Response.Write("<br><b>" + strMember + "</b>");
    }
}

public StringCollection GetGroupMembers(string strDomain, string strGroup)
...{
    StringCollection groupMemebers = new StringCollection();
    try
    ...{
        DirectoryEntry ent = new DirectoryEntry("LDAP://DC=" + strDomain + ",DC=com");
        DirectorySearcher srch = new DirectorySearcher("(CN=" + strGroup + ")");
        SearchResultCollection coll = srch.FindAll();
        foreach (SearchResult rs in coll)
        ...{
            ResultPropertyCollection resultPropColl = rs.Properties;
            foreach( Object memberColl in resultPropColl["member"])
            ...{
                DirectoryEntry gpMemberEntry = new DirectoryEntry("LDAP://" + memberColl);
                System.DirectoryServices.PropertyCollection userProps = gpMemberEntry.Properties;
                object obVal = userProps["sAMAccountName"].Value;
                if (null != obVal)
                ...{
                    groupMemebers.Add(obVal.ToString());
                }
            }
        }
    }
    catch (Exception ex)
    ...{
        Trace.Write(ex.Message);
    }
    return groupMemebers;
}         
2:获取某个AD中所有的域

private void Page_Load(object sender, System.EventArgs e)
...{
    StringCollection adDomains = this.GetDomainList();
    foreach (string strDomain in adDomains)
    ...{
        Response.Write("<br>" + strDomain + "</b>");
    }
}

private StringCollection GetDomainList()
...{
    StringCollection domainList = new StringCollection();
    try
    ...{
        DirectoryEntry en = new DirectoryEntry("LDAP://");
        // Search for objectCategory type "Domain"
        DirectorySearcher srch = new DirectorySearcher("objectCategory=Domain");
        SearchResultCollection coll = srch.FindAll();
        // Enumerate over each returned domain.
        foreach (SearchResult rs in coll)
        ...{
            ResultPropertyCollection resultPropColl = rs.Properties;
            foreach( object domainName in resultPropColl["name"])
            ...{
                domainList.Add(domainName.ToString());
            }
        }
    }
    catch (Exception ex)
    ...{
        Trace.Write(ex.Message);
    }
    return domainList;
}            
3:获取当前登录用户的全名

private void Page_Load(object sender, System.EventArgs e)
...{
    WindowsPrincipal p = Thread.CurrentPrincipal as WindowsPrincipal;
    Response.Write(GetFullName(p.Identity.Name));
}

private string GetFullName(string strLogin)
...{
    string str = "";
    // Parse the string to check if domain name is present.
    int idx = strLogin.IndexOf('''');
    if (idx == -1)
    ...{
        idx = strLogin.IndexOf(''@'');
    }

    string strDomain;
    string strName;

    if (idx != -1)
    ...{
        strDomain = strLogin.Substring(0, idx);
        strName = strLogin.Substring(idx+1);
    }
    else
    ...{
        strDomain = Environment.MachineName;
        strName = strLogin;
    }

    DirectoryEntry obDirEntry = null;
    try
    ...{
        obDirEntry = new DirectoryEntry("WinNT://" + strDomain + "/" + strName);
        System.DirectoryServices.PropertyCollection  coll = obDirEntry.Properties;
        object obVal = coll["FullName"].Value;
        str = obVal.ToString();
    }
    catch (Exception ex)
    ...{
        str = "";
        Trace.Write(ex.Message);
    }
    return str;
}        

时间: 2024-10-25 05:21:45

ActiveDirectory学习日记(一)的相关文章

考拉小巫的英语学习日记:写给为梦想而奋斗的人,登上畅销书榜首

排行榜 1.考拉小巫的http://www.aliyun.com/zixun/aggregation/18654.html">英语学习日记:写给为梦想而奋斗的人 2.你若安好便是晴天:林徽因传 3.气场修习术 4.青春 5.百年孤独 6.FBI教你读心术(钻石升级版) 7.好妈妈胜过好老师 8.少有人走的路:心智成熟的旅程 9.因为痛,所以叫青春:写给独自站在人生路口的你 10.别相信任何人

[学习日记]对SOAP头内添加信息的验证,可实现对请求WEB服务进行身份验证。

首先,当然是发送的SOAP头里添加信息的方法了,前面有过记录,这里就不再写了可参见[学习日记]对SOAP请求的头添加内容的方法 那么这次向头内添加的信息为: dim proxy as GetHttpHeadersProxy=new GetHttpHeadersProxyproxy.AddHttpHeader("name","aowind")proxy.AddHttpHeader("pwd","123456") 接下来就是WEB

学习日记--续

真惨,这么久才第二次登陆! 这几天学习了pb,刚刚了解了easerver,尝试进行多层开发.只是大体有了认识,具体实现还有很多问题. ea server作为一个应用中间层,允许多种方式的客户端连接.比如pb,jsp(asp).实现方式: 1.首先建立应用组件(component 应用的主要实现部分,实现数据库的连接,数据的处理等),并创建对应的方法,然后发布 2.然后建立应用代理(proxy) 这个代理包含了服务器组件方法的接口部分,主要是方便进行客户端开发,实现对服务器组件的方法的调用 3.客

asp.net 学习日记数据分页

asp.net|分页|数据   想来学习 .net 也2个月了吧,最初遇到的一个问题就是分页程序获取当前页的数据并支持字段排序而且支持搜索时的 Where 语句 在网上搜了 很久也没找到,也在 Asp.net 的一些论坛上发过帖子也许是那些高手懒得理我吧(做菜鸟就是难)也许是我找东西的能力有问题,但我却找到了以下SQL 的 存储过程.  SET @page = (@page-1) * @pagesize + 1  EXEC sp_cursoropen @P1 output, @strSQL EX

[学习日记]重构简易RSSREADER的UML类图

这几天在学UML,找到一个不错的工具trufun plato ,一个国产的UML软件,用起来很爽哈!刚学UML,才看书十多页,无聊,按自己乱想画了个前面做的RSSREADER的类图发上来,算是学习记念吧,过些日子看了,多半自己要喷饭!

[学习日记]对控件的继承和重载

今天在学习有关CLASS的继承后,有后领悟就写了一个CLASS来继承textbox,嘿嘿,成功了!当然还对其进行了重载,对输入的字符类型进行了限制,使其只能输入数字.继承类如下: Public Class NumericTextBoxClass NumericTextBox Inherits System.Windows.Forms.TextBoxProtected Overrides Sub OnKeyPress()Sub OnKeyPress(ByVal e As System.Window

DODS学习日记(六)

DODS可以转换doml文件,生成器向导可以将doml文件转换为html文件,pdf文件,xml文件和ptl文件,目标文件的文件名同源文件名一样,他们将会被放到ouuput目录下. Doml文件也可以手动的转换,需要使用到下面的文件. Doml2html-转化doml文件到html文件/ Doml2pdf Doml2xml Doml2ptf Olddonl_2_donl51:转换doml3.1和doml5.0文件到doml5.1文件Doml31_2_conf51转换老的doml31文件到..

DODS学习日记(五)

从5.1final版开始,DO的缓存转换到DataStruct的缓存中.只有那些原始的DataStructs加入到新的DataStruct缓存中而不是所有的DO,DO只有一个数据(DataStruct对象).所有的转换是在这个对象上完成的, DataStruct对象包含了每个表的列的值,现在,DO保存了两个DataStruct引用. (1)    orginalData (2)    data orginalData保存了原始的数据(从数据库中读取),这个数据将不会被修改直到提交,而且如果缓存存

DODS学习日记(四)

表参数定义在三个层次: 第一个层次是DatabaseManager层,这个层次可以定义下面的参数(可选) DatabaseManager.defaults.allReadOnly=true DatabaseManager.defaults.lazyLoading=true DatabaseManager.defaults.maxExecuteTime=200 第二个层次是 database层.,这个层次可以定义的参数如下(可选) DatabaseManager. .DB. <database_n