在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
正文: Visual C#构建网络计算机树形图
Visual C#编写网络应用程序一般会使用到.Net FrameWork SDK中提供的二个重要的网络命名空间"System.Net"和"System.Net.Sockets"。其实Visual C#还是可以通过调用其他命名空间中的类库来实现很多有用的网络功能,最常见的命名空间就是"System.DirectoryServices", "System.DirectoryServices"命名空间定义了"DirectoryEntry"和"DirectorySearcher"类,通过它们能够访问 Active Directory服务接口(简称ADSI)。Active Directory服务接口提供一种构造复杂计算机网络的简单方法。Active Directory服务接口系统以分层树状结构排列。每个节点表示网络上的一个资源或服务(对应网络中的域或工作组),并且这个节点包含一组可检索和操作的属性(对应网络中的主机)。本文就是通过它们来实现一个比较有用的网络功能--构建一个网络组成的计算机树形结构图。 一.Active Directory服务接口和DirectoryEntry类 Active Directory服务接口是Microsoft Windows Active Directory的编程接口。它允许应用程序使用单个接口与网络上的不同目录进行交互。Visual C#是通过创建DirectoryEntry和 DirectorySearcher能够轻松访问这个接口。而这种操作对其他编程语言而言,却意味着要调用需要WinAPI函数。 Active Directory服务接口可以实现很多操作,本文所实现的访问Active Directory树,以构建网络配置的计算机分层树形结构图,只是其中的一个很小的部分。若要使用Active Directory服务接口,必须在客户端计算机上安装 ADSI 2.5或更高版本。Windows 2000自动安装了ADSI 2.5,而对Win 98及以下的系统,则没有安装ADSI 2.5,这也就是下面介绍的这个网络功能无法获得系统是Win 98及以下操作系统在网络树形图对应的位置。所以下面介绍的网络功能成功构建网络的计算机树形图前提之一就是网络上的计算机的操作系统在Windows 2000及以上。 由于本文只使用了DirectoryEntry类,故只介绍DirectoryEntry的结构和使用方法,表01和表02是DirectoryEntry类常用属性、常用方法及其说明:
表01:DirectoryEntry类的常用属性及其说明
表02:DirectoryEntry类的常用方法及其说明 二.Visual C#使用ADSI构建网络计算机树形图 创建DirectoryEntry类实例后,并为该实例指定一个路径,指示所访问的系统上使用的提供程序的类型以及要绑定到的对象。表03为DirectoryEntry类可以访问的服务提供程序以及每种服务提供程序的标识符。
表03:DirectoryEntry类访问的服务提供程序以及每种服务提供程序的标识符 当创建DirectoryEntry类实例,并把此实例绑定到指定路径的Active Directory中的节点。如果是此节点对应的是Windows NT服务提供程序,那就可以访问此节点下域、计算机、打印队列和会话。本文就是通过DirectoryEntry此种功能访问网络中计算机,从而构建网络计算机树形图的。下面就来介绍具体的实现方法。 三.本文中介绍的程序设计及运行环境 (1).微软视窗2000 服务器版。 (2).Visual Studio .Net 2003企业结构版,.Net Framework SDK 4322。
四.Visual C#构建网络计算机树形图的实现步骤 Visual C#构建网络计算机树形图的具体步骤如下: 1. 启动Visual Studio .Net。 2. 选择菜单【文件】|【新建】|【项目】后,弹出【新建项目】对话框。 3. 将【项目类型】设置为【Visual C#项目】。 4. 将【模板】设置为【Windows应用程序】。 5. 在【名称】文本框中输入【Visual C#构建网络计算机树形图】。 6. 在【位置】的文本框中输入【E:\VS.NET项目】,然后单击【确定】按钮,这样在"E:\VS.NET项目"目录中就产生了名称为"Visual C#构建网络计算机树形图"的文件夹,并在里面创建了名称为"Visual C#构建网络计算机树形图"的项目文件。 7. 把Visual Studio .Net的当前窗口切换到【Form1.cs(设计)】窗口,并从【工具箱】中的【Windows窗体组件】选项卡中往Form1窗体中拖入下列组件,并执行相应的操作: 一个TreeView组件,名称为treeView1,使用此组件来显示网络计算机的树形图。 一个Button组件,通过此组件的Click事件来读取网络中域和工作组,并在此Button组件拖入Form1的设计窗体后,双击它,则系统会在Form1.cs文件分别产生此组件的Click事件对应的处理代码。 8. 在【解决方案资源管理器】窗口中,双击Form1.cs文件,进入Form1.cs文件的编辑界面。并在Form1.cs文件的开头,用下列导入命名空间代码替代系统缺省的导入命名空间代码。 using System.Drawing ; 9. 在Form1.cs的class代码区中添加下列代码,下列代码是创建DirectoryEntry类实例,并把此实例绑定到Windows NT服务提供程序: private DirectoryEntry entryPC = new DirectoryEntry ( "WinNT:" ) ; 10. 以下面代码替代系统产生的InitializeComponent过程,下列代码的作用是初始化程序中的组件,并定义treeView1组件的DoubleClick事件: private void InitializeComponent ( ) 至此【Visual C#构建网络计算机树形图】项目的界面设计和功能实现的准备工作就完成了,设计后的界面如图01所示:
11. 用下列代码替换Form1.cs中的button1的Click事件对应的处理代码,下列代码读取网络中域或工作组,并加入到树形图中: private void button1_Click ( object sender , System.EventArgs e ) 12. 在Form1.cs中的button1的Click代码之后, 添加下列代码,下列代码的作用是定义treeView1的DoubleClick事件,在此事件中读取选定域或工作组中对应的计算机主机: private void treeView1_DoubleClick ( object sender , System.EventArgs e ) 13. 至此在上述步骤都正确完成后,【Visual C#构建网络计算机树形图】项目的全部工作就基本完成了。此时单击快捷键F5运行程序,单击【读取】按钮,则程序会读取网络中的域或工作组,并通过 treeView1组件显示出来,此时再双击treeView1中的节点,则程序会读取当前节点对应的域或工作组中的计算机,并显示出来。图02是【Visual C#构建网络计算机树形图】项目的运行界面:
五.总结 Visual C#构建网络计算机树形图其实是ADSI解决网络问题的一个应用,Visual C#之所以能够轻松、灵活的使用ADSI接口就是因为.Net FrameWork SDK中提供了可操作ADSI的类,灵活使用这些类库的确能够解决看似很烦杂的实际问题。当然本文介绍的网络功能也存在一些弊端,譬如: |
请发表评论