社区
C#
帖子详情
在C#如何列出网上邻居计算机列表?
高迪安
2003-10-15 10:26:16
如何用纯C#方法列出网上邻居计算机列表?
...全文
252
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#
高级程序设计
为什么要学习
C#
?
C#
是微软的**语言,拥有接近20年的历史和广泛的应用。目前国内对
C#
的书籍和视频相对较少,但
C#
和.NET的发展前程是十分光明的,这体现在微软公司本身强劲的实力,
C#
的开源,.NET Core社区的蓬勃发展,以及.NET开发岗位需求的不断增加。
C#
用途广泛,容易上手。可以说,如果你熟悉
C#
语言,你将不愁找不到好的工作。 本课程分为四部分(三层架构、设计模式、多线程、网络编程达人),详细的讲述了一名
C#
中、高级程序员需要学习的各项知识,其中宿舍管理系统实战是重中之重。课程主要特点: 1. 紧跟微软
C#
发展,使用
C#
语言和开发环境版本2. 结合应用案例,力求做到深入浅出,明白易懂3. 重要概念附有英文翻译4. 独家附赠一个面试经验分享,希望每位学生都可以从中受益,在面试中脱颖而出5.含宿舍管理系统的讲解希望本套课程在你学习
C#
的过程中,可以对你有所帮助。
C#
中使用
网上邻居
System.DirectoryServices.DirectoryEntry组件提供了对Active Directory的访问也就是你要的,我发个使用的例子DirectoryEntry组件提供了Path属性,根据文档,此属性指定了目录服务中用来访问对象的对象名,其格式如下:protocol://servername:port number/distinguished name此语句的第一部分定义
C#
开发实例大全(提高卷)
下载地址:网盘下载内容简介······《
C#
开发实例大全(提高卷)》筛选、汇集了
C#
开发从基础知识到高级应用各个层面约600个实例及源代码,每个实例都按实例说明、关键技术、设计过程、详尽注释、秘笈心法的顺序进行了分析解读。《
C#
开发实例大全(提高卷)》分6篇共21章,主要内容有鼠标操作控制、键盘操作控制、获取系统相关信息、系统控制应用、程序控制应用、...
C#
110,536
社区成员
642,578
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章