(转)C#中 DirectoryEntry组件应用实例

C#中 DirectoryEntry组件应用实例

DirectoryEntry类封装Active Directory层次结构中的节点或对象,使用该类可以绑定到对象,或者读取和更新属性。图1所示为DirectoryEntry组件。

DirectoryEntry组件
1.  功能
DirectoryEntry类封装Active Directory层次结构中的节点或对象,使用该类可以绑定到对象,或者读取和更新属性。图1所示为DirectoryEntry组件。

图1  DirectoryEntry组件
2.属性
DirectoryEntry组件常用属性及说明如表1所示。

表1       DirectoryEntry组件常用属性及说明
下面对比较重要的属性进行详细介绍。
Path属性:用于获取或设置DirectoryEntry对象的路径,默认值为空字符串(“”)。
语法:

public string Path { get; set; }
属性值:DirectoryEntry对象的路径,默认值为空字符串(“”)。
示例
Path属性的使用
本示例主要是设置Path属性,将本机上的用户名、工作组添加到treeview控件中。其运行结果如图2所示。

图2  Path属性
程序主要代码如下:
完整程序代码如下:
★★★★★主程序文件完整程序代码★★★★★
using System;
            using System.Collections.Generic;
            using System.Windows.Forms;
            namespace _8_26
            {
            static class Program
            {
            /// <summary>
            /// 应用程序的主入口点。
/// </summary>
            [STAThread]
            static void Main()
            {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new frmDirectoryEntry());
            }
            }
            }
★★★★★frmDirectoryEntry窗体设计文件完整程序代码★★★★★
using System;
            using System.Collections.Generic;
            using System.ComponentModel;
            using System.Data;
            using System.Drawing;
            using System.Text;
            using System.Windows.Forms;
            using System.DirectoryServices;
            using System.Diagnostics;
            namespace _8_26
            {
            public partial class frmDirectoryEntry : Form
            {
            public frmDirectoryEntry()
            {
            InitializeComponent();
            }
            //以下函数实现路径及属性的添加功能
private void AddPathAndProperties(TreeNode node, DirectoryEntry entry)
            {
            node.Nodes.Add(new TreeNode("Path:" + entry.Path));
            TreeNode propertyNode = new TreeNode("Properties");
            node.Nodes.Add(propertyNode);
            foreach (string propertyName in entry.Properties.PropertyNames)
            {
            string oneNode = propertyName + ":" + entry.Properties[propertyName][0].ToString();
            propertyNode.Nodes.Add(new TreeNode(oneNode));
            }
            }
            private void frmDirectoryEntry_Load(object sender, EventArgs e)
            {
            //entryPC.Path = "WinNT://192.168.1.96/ZHY";
            entryPC.Path = "WinNT://workgroup/Localhost";//Workgroup计算机所处的组//ZHY计算机名
//entryPC.Path = "LDAP://ZHY/rootDSE";
            TreeNode users = new TreeNode("Users");
            TreeNode groups = new TreeNode("Groups");
            TreeNode services = new TreeNode("Services");
            viewPC.Nodes.AddRange(new TreeNode[] { users, groups, services });
            foreach (DirectoryEntry child in entryPC.Children)
            {
            TreeNode newNode = new TreeNode(child.Name);
            switch (child.SchemaClassName)
            {
            case "User":
            users.Nodes.Add(newNode);
            break;
            case "Group":
            groups.Nodes.Add(newNode);
            break;
            case "Service":
            services.Nodes.Add(newNode);
            break;
            }
            AddPathAndProperties(newNode, child);
            //http://www.isstudy.com
            }
            }
            }//
            }

 

namespace _8_26 { partial class frmDirectoryEntry { /// summary /// 必需的设计器变量。 /// /summary private System.ComponentModel.IContainer components = null; /// summary /// 清理所有正在


 

namespace _8_26
            {
            partial class frmDirectoryEntry
            {
            /// <summary>
            /// 必需的设计器变量。
/// </summary>
            private System.ComponentModel.IContainer components = null;
            /// <summary>
            /// 清理所有正在使用的资源。
/// </summary>
            /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
            protected override void Dispose(bool disposing)
            {
            if (disposing && (components != null))
            {
            components.Dispose();
            }
            base.Dispose(disposing);
            }
            #region Windows 窗体设计器生成的代码
/// <summary>
            /// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
            private void InitializeComponent()
            {
            this.entryPC = new System.DirectoryServices.DirectoryEntry();
            this.viewPC = new System.Windows.Forms.TreeView();
            this.SuspendLayout();
            //
            // viewPC
            //
            this.viewPC.Location = new System.Drawing.Point(44, 26);
            this.viewPC.Name = "viewPC";
            this.viewPC.Size = new System.Drawing.Size(195, 97);
            this.viewPC.TabIndex = 0;
            //
            // frmDirectoryEntry
            //
            this.ClientSize = new System.Drawing.Size(292, 184);
            this.Controls.Add(this.viewPC);
            this.Name = "frmDirectoryEntry";
            this.Load += new System.EventHandler(this.frmDirectoryEntry_Load);
            this.ResumeLayout(false);
            }
            #endregion
            private System.DirectoryServices.DirectoryEntry entryPC;
            private System.Windows.Forms.TreeView viewPC;
            }
            }

Path属性的语法将会随着提供程序的不同而不同。一些常见的情况如下所示。
(1)WinNT。
① 连接到计算机上的组。例如,“WinNT://<域名>/<计算机名>/<组名>”。如果是连接到本地计算机,则为“WinNT://<计算机名>/<组名>”。
② 连接到计算机上的用户。例如,“WinNT://<域名>/<计算机名>/<用户名>”。如果是连接到本地计算机,则为“WinNT://<计算机名>/<用户名>”。
③ 连接到计算机上的服务。例如,“WinNT://<域名>/<计算机名>/<服务名>”。如果是连接到本地计算机,则为“WinNT://<计算机名>/<服务名>”。
④ 发现网络上的所有域。例如,“WinNT:”。通过枚举此项的子级可以找到这些域。
(2)LDAP。
① 连接到域中的组。例如,“LDAP://CN=<组名>, CN =<用户>, DC=<域控制器 1>, DC=<域控制器 2>,...”。
② 连接到域中的用户。例如,“LDAP://CN=<完整用户名>, CN=<用户>, DC=<域控制器 1>, DC=<域控制器 2>,...”。
③ 连接到域中的计算机。例如,“LDAP://CN=<计算机名>, CN=<计算机>, DC=<域控制器 1>, DC=<域控制器 2>,...”。
(3)IIS。
① 连接到Web目录。例如,“IIS://LocalHost/W3SVC/1/ROOT/<Web 目录名>”。
② 若要使用LDAP绑定到当前域,请使用路径“LDAP://RootDSE”,然后获取默认命名上下文,并重新绑定该项。
3.方法
Exists方法:用于确定指定路径是否表示目录的实际项。
语法:

public static bool Exists (string path)

 

 

path:要验证项的路径。 返回值:如果指定路径表示目录服务的实际项,则为True;否则为False。


path:要验证项的路径。
返回值:如果指定路径表示目录服务的实际项,则为True;否则为False。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux学习】epoll详解

From: http://blog.csdn.net/xiajun07061225/article/details/9250579 什么是epoll epoll是什么&#xff1f;按照man手册的说法&#xff1a;是为处理大批量句柄而作了改进的poll。当然&#xff0c;这不是2.6内核才有的&#xff0c;它是在2.5.44内核中被引进的(epoll(4) is a …

Windows Server Backup 2012设置备份周期

Windows Server Backup 2012设置备份周期 作者&#xff1a;杨坚 Windows Server Backup 概述 Windows Server Backup 功能提供一组向导及其他工具&#xff0c;您可用来对服务器执行基本的备份和恢复任务。自首次发布 Windows Server 2008 以来&#xff0c;此功能已得到更新。另…

JSP作业1--5!

输出5的阶乘 <body> <!-- 5的阶乘--> <% int s1; for(int j1;j<6;j){ %> <%s*j; %><% }%> <br> 5的阶乘是&#xff1a; <%s %> 结果&#xff1a; 转载于:https://www.cnblogs.com/miss123/p/5611038.html

Yii Zii.widgets.Cmenu 操作

为什么80%的码农都做不了架构师&#xff1f;>>> $this->widget(zii.widgets.CMenu, array( activeCssClass>当前热点元素的样式, firstItemCssClass>第一个元素的样式, lastItemCssClass>最后一个元素的样式, encodeLable>false //這樣&#xff…

比较分析 Spring AOP 和 AspectJ 之间的差别

比较分析 Spring AOP 和 AspectJ 之间的差别 英文原文&#xff1a;Comparative Analysis Between Spring AOP and AspectJ 标签&#xff1a; AspectJ Spring158人收藏此文章, 我要收藏oschina 推荐于 3年前 (共 7 段, 翻译完成于 10-24) (19评) 参与翻译(2人)&#xff1a; bear…

微信小程序打开pdf文件;uni-app下载打开pdf文件;uni-app微信小程序下载打开pdf文件预览;

1.首先需要在小程序后台-开发设置-服务器域名 配置好下载的域名。不配置&#xff1a;会导致下载失败和打开文件失败&#xff1b; 2.pdf文件的url要确保可以浏览器直接打开。 <template><view class"pdf"><view v-for"(item,index) in pdfList&q…

Dynamips结合VMware搭建站点到站点×××环境

Dynamips是现如今最好的思科模拟器&#xff0c;它能够加载的思科IOS&#xff0c;模拟出真实的路由器&#xff0c;这使得我们在没有思科设备的情况下也能很好的学习&#xff0c;Dynamips的强大之处不仅于此&#xff0c;它还能与我们的VMware虚拟机&#xff0c;甚至和真机实行互连…

httpd设置HTTPS双向认证

去年用tomcat、jboss配置过HTTPS双向认证&#xff0c;那时候主要用的是JDK自带的keytool工具。这次是用httpd openssl&#xff0c;区别比较大 在网上搜索了很多文章&#xff0c;发现全面介绍的不多&#xff0c;或者就是版本比较旧了。所以把我配置的过程完整地记录下来&#x…

微信小程序通讯录功能;uni-app微信小程序通讯录单选;uni-app微信小程序通讯录多选;uni-app微信小程序通讯录好友功能;uni-indexed-list使用;通讯录高度修改;

介绍&#xff1a;项目使用的是uni-app做的微信小程序&#xff1b;uni-app里原来就用一个组件uni-indexed-list&#xff0c;是用来做通讯录的&#xff1b;可以直接看官方案例也就是hello-uniapp-master下的导航栏&#xff1b;但是官方这个是多选&#xff0c;且没有默认选中功能&…

推荐! el-input 输入框类型;只能输入数字的输入框;保留两位小数输入框;只能输入正整数和0的输入框;手机号正则校验;车牌号码正则校验

去除多余的0看这篇 以下代码可直接复制使用&#xff1a; 以下代码可直接复制使用&#xff01; <template><div><a href"https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215?fraladdin#10">百度正则</a&…

Java多线程之JUC包:Semaphore源码学习笔记

若有不正之处请多多谅解&#xff0c;并欢迎批评指正。 请尊重作者劳动成果&#xff0c;转载请标明原文链接&#xff1a; http://www.cnblogs.com/go2sea/p/5625536.html Semaphore是JUC包提供的一个共享锁&#xff0c;一般称之为信号量。 Semaphore通过自定义的同步器维护了一个…

在vue项目中操作元素ref案例;

原博主链接 <!--* Description:会动的词云* Author: Vergil* Date: 2021-08-25 14:17:45* LastEditTime: 2021-08-25 17:08:15* LastEditors: Vergil --> <template><div class"wordCloud" ref"wordCloud"></div> </template&…

【C->Cpp】深度解析#由C迈向Cpp(2)

目录 &#xff08;一&#xff09;缺省参数 全缺省参数 半缺省参数 缺省参数只能在函数的声明中出现&#xff1a; 小结&#xff1a; &#xff08;二&#xff09;函数重载 函数重载的定义 三种重载 在上一篇中&#xff0c;我们从第一个Cpp程序为切入&#xff0c;讲解了Cpp的…

Session机制详解

虽然session机制在web应用程序中被采 用已经很长时间了&#xff0c;但是仍然有很多人不清楚session机制的本质&#xff0c;以至不能正确的应用这一技术。本文将详细讨论session的工作机制并且对在 Java web application中应用session机制时常见的问题作出解答。 一、术语ses…

element-ui的表单校验;el-form表单校验;el-form表单自定义校验;手机号校验;车牌号校验;车牌号正则校验;手动校验表单某一项;手动清空表单的某一项校验结果

示例&#xff1a;代码在末尾 可以直接复制使用 一、基本属性认知&#xff1a; 1. required: true 会有 * &#xff0c; 但仅是触发最后点击提交按钮时&#xff0c;校验某一项位必填&#xff1b;与输入事件或者选择或者失焦时候 怎么校验无关 &#xff08;这时候的校验取决于是…

Eclipse For JavaSE安装、配置、测试

Eclipse For JavaSE安装、配置、测试(win7_64bit) 目录 1.概述 2.本文用到的工具 3.安装与配置 4.JavaSE开发测试 5.ADT安装与Android开发测试 6.注意事项 7.相关博文 >>看不清的图片可在新标签打开查看大图 1.概述 eclipse应该是Java开发界家喻户晓的IDE了&#xff0c;通…

epoll的两种模式

From: http://haoningabc.iteye.com/blog/1432958 linux异步IO浅析 http://hi.baidu.com/_kouu/blog/item/e225f67b337841f42f73b341.html epoll有两种模式,Edge Triggered(简称ET) 和 Level Triggered(简称LT).在采用这两种模式时要注意的是,如果采用ET模式,那么仅当状态发生…

关闭eslint检验;vue-cli3搭建的vue项目关闭eslint;脚手架3关闭eslint;

本文是解决关闭eslint的问题&#xff1b;如果想要开启eslint和配置&#xff0c;可以查看这篇开启eslint检验&#xff1b; 我们使用vue-cli3脚手架搭建vue项目时候&#xff0c;会默认选中eslint风格代码&#xff1b;如果想要关闭eslint检验&#xff0c;有如下两种方案&#xff…

转一篇关于并发和并行概念的好文,附带大神评论

转自&#xff1a;https://laike9m.com/blog/huan-zai-yi-huo-bing-fa-he-bing-xing,61/ 还在疑惑并发和并行&#xff1f; OK&#xff0c;如果你还在为并发&#xff08;concurrency&#xff09;和并行&#xff08;parallesim&#xff09;这两个词的区别而感到困扰&#xff0c;那…

MySQL索引背后的数据结构及算法原理-转

转 http://www.codinglabs.org/html/theory-of-mysql-index.html 摘要 本文以MySQL数据库为研究对象&#xff0c;讨论与数据库索引相关的一些话题。特别需要说明的是&#xff0c;MySQL支持诸多存储引擎&#xff0c;而各种存储引擎对索引的支持也各不相同&#xff0c;因此MySQL…