C#中 DirectoryEntry組件應用執行個體

來源:互聯網
上載者:User
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。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.