社区
C#
帖子详情
在C#如何列出网上邻居计算机列表?
高迪安
2003-10-15 10:26:16
如何用纯C#方法列出网上邻居计算机列表?
...全文
246
8
打赏
收藏
在C#如何列出网上邻居计算机列表?
如何用纯C#方法列出网上邻居计算机列表?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
速马
2003-12-29
打赏
举报
回复
1. 访问网上邻居的速度本来就很慢
2. C:\Documents and Settings\YourName\NetHood
访问前删除下面的东西试试
rgbcn
2003-10-15
打赏
举报
回复
System.DirectoryServices.DirectoryEntry组件提供了对Active Directory的访问也就是你要的,我发个使用的例子
DirectoryEntry组件提供了Path属性,根据文档,此属性指定了目录服务中用来访问对象的对象名,其格式如下:
protocol://servername:port number/distinguished name
此语句的第一部分定义了访问将使用的协议,如
LDAP: (Lightweight Directory Access Protocol)
IIS: (提供IIS元数据来读及配置Internet Infomation Server)
WinNT: (提供在非常有限的性能下对Windows NT域的访问)
NDS: (提供对Novell Directory Service的访问)
等等(详细信息清参考MSDN)。
据此,我们构造了一个DirectoryEntry实例,将它的Path设为"WinNT:",以通过对它的所有子项的枚举来发现网络上的所有域(以及工作组)。这样,再对所发现的域(以及工作组)的子项进行枚举,就可以发现网络上的所有计算机。下面的一个控制台小程序演示了这一点。
using System;
using System.DirectoryServices;
class TempClass
{
static void Main()
{
EnumComputers();
}
static void EnumComputers()
{
using(DirectoryEntry root = new DirectoryEntry("WinNT:"))
{
foreach(DirectoryEntry domain in root.Children)
{
Console.WriteLine("Domain | WorkGroup:\t"+domain.Name);
foreach(DirectoryEntry computer in domain.Children)
{
Console.WriteLine("Computer:\t"+computer.Name);
}
}
}
}
}
--------------------------------------------------------------------------------
改进后的Windows Forms方案
上面代码中两个嵌套的foreach循环看起来并不是太好,并且控制台的显示效果也并不那么美观。下面,我将对代码进行一些改动,并将它移植到WinForm上。
新建一个Windows Application[C#],在Form上添加一个TreeView,命名为treeView1。
添加以下几个函数:
//用指定的文本构造一个节点,将其添加为参数parant的子节点,并返回刚构造的节点
private TreeNode AddNode(TreeNode parant,string text)
{
TreeNode node = new TreeNode(text);
parant.Nodes.Add(node);
return node;
}
//递归地找到参数entry的所有子节点,并在treeView1中显示;这里的entry与entryNode需相对应
private void EnumChildren(DirectoryEntry entry,TreeNode entryNode)
{
if(entry.Children!=null) //如果无子节点则结束
{
foreach(DirectoryEntry i in entry.Children)
{
//将各子节点加入TreeView,并进行递归
EnumChildren(i,AddNode(entryNode,i.Name));
}
}
}
//用给定的字符串构造根节点,并列出其所有子节点
private void Enumerate(string path)
{
try
{
using(DirectoryEntry root = new DirectoryEntry(path))
{
TreeNode node = new TreeNode(root.Name);
treeView1.Nodes.Add(node);
EnumChildren(root,node);
}
}
catch {}
}
formatkm
2003-10-15
打赏
举报
回复
System.DirectoryServices;
没有这个类库!?
张张好
2003-10-15
打赏
举报
回复
foreach(DirectoryEntry domain in root.Children)
{
lb_pcName.Items.Add("+domain.Name+");
foreach(DirectoryEntry pc in domain.Children)
{
if(pc.Name!="Schema")//Schema是结束标记
lb_pcName.Items.Add(" "+pc.Name);
}
}
yangbc
2003-10-15
打赏
举报
回复
up
windinwing
2003-10-15
打赏
举报
回复
获得网上邻居里有哪些计算机和他们的ip地址
using System;
using System.DirectoryServices;
using System.Net;
class TestClass
{
static void Main (string[] args)
{
ShowComputers();
}
public static void ShowComputers()
{
//or use "WinNT://your_domain_name"
DirectoryEntry root = new DirectoryEntry("WinNT:"); DirectoryEntries domains = root.Children;
domains.SchemaFilter.Add("domain");
foreach (DirectoryEntry domain in domains)
{
Console.WriteLine(domain.Name);
DirectoryEntries computers = domain.Children;
computers.SchemaFilter.Add("computer");
foreach (DirectoryEntry computer in computers)
{
Console.WriteLine("\t" + computer.Name);
IPHostEntry iphe = Dns.GetHostByName(computer.Name);
foreach (IPAddress ip in iphe.AddressList)
{
Console.WriteLine("\t\t" + ip);
}
DirectoryEntries users = computer.Children;
}
}
}
}
rqxiang
2003-10-15
打赏
举报
回复
up
高迪安
2003-10-15
打赏
举报
回复
多谢几位大哥的回复,你们所提的基本方法雷同,都可以得到网上
邻居计算机列表,但存在以下问题:
1、所得到的资料信息过多,以至程序反应时间过长
2、得到过时的信息(临时用过的计算机名现已不用了,也在此计算机列表里)
还请几位大哥继续帮忙!
C#
中使用
网上邻居
System.DirectoryServices.DirectoryEntry组件提供了对Active Directory的访问也就是你要的,我发个使用的例子DirectoryEntry组件提供了Path属性,根据文档,此属性指定了目录服务中用来访问对象的对象名,其格式如下:protocol://servername:port number/distinguished name此语句的第一部分定义
C#
开发实例大全(提高卷)
下载地址:网盘下载内容简介······《
C#
开发实例大全(提高卷)》筛选、汇集了
C#
开发从基础知识到高级应用各个层面约600个实例及源代码,每个实例都按实例说明、关键技术、设计过程、详尽注释、秘笈心法的顺序进行了分析解读。《
C#
开发实例大全(提高卷)》分6篇共21章,主要内容有鼠标操作控制、键盘操作控制、获取系统相关信息、系统控制应用、程序控制应用、...
C#
编写基于.Net IOCP的高性能服务器
无论什么平台,编写支持高并发性的网络服务器,瓶颈往往出在I/O上,目前最高效的是采用Asynchronous I/O模型,Linux平台提供了epoll,Windows平台提供了I/O Completion Port(IO完成端口,即IOCP)。 Windows自winsock2开始就提供了IOCP支持,可以通过C++直接调用API,但对于基于.Net的
C#
开发,是在.Net Framework
C#
操作Active Directory
活动目录将成为企业基础架构的根本,所有的高级服务都会向活动目录整合,以利用其统一的身份验证、安全管理以及资源公用。活动目录的首要任务或者说主要目标是 客户端的安全管理,然后是客户端的标准化管理。活动目录、域及组策略活动目录、域和组策略在很多用户那里都有所运用,如果刚开始接触这些内
C#
开发实战1200例(第Ⅱ卷)(奋斗的小鸟)_PDF电子书
引言 概述 Delphi,目前是第十个版本,它为我们提供了四种编程语言:构建Windows应用程序的Delphi for Win32 和 C++,以及构建.Net平台应用程序Delphi for .NET and
C#
。本书着重于教您如何使用这四种编 程语言构建应用程序。 一般来说,本书是需要从头到尾一页不漏的读下去,因为每一章都依赖于前面的章节。但是,因为你
C#
110,529
社区成员
642,572
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章