社区
C#
帖子详情
在C#如何列出网上邻居计算机列表?
高迪安
2003-10-15 10:26:16
如何用纯C#方法列出网上邻居计算机列表?
...全文
247
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社区的蓬勃发展...
C#
中使用
网上邻居
//用给定的字符串构造根节点,并
列出
其所有子节点 private void Enumerate(string path) { try { using(DirectoryEntry root = new DirectoryEntry(path)) { TreeNode node = new TreeNode(root.Name); ...
C#
开发实例大全(提高卷)
下载地址:网盘下载内容简介······《
C#
开发实例大全(提高卷)》筛选、汇集了
C#
开发从基础知识到高级应用各个层面约600个实例及源代码,每个实例都按实例说明、关键技术、设计过程、详尽注释、秘笈心法的顺序...
C#
110,533
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章