C#中使用网上邻居

转载 2004年09月15日 15:34:00
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 {}
}

[教程]手机通过网络(网上邻居)播放PC共享视频的方法

优点:与PC共享视频,无需转码,无需使用手机存储空间。 缺点:需要无线网络。可能需要缓冲时间。 需要的软件 1、MX_Player 2、ES文件浏览器,旧版或新版都可,本人喜欢用旧版的 设置...
  • benjaminwan
  • benjaminwan
  • 2014年03月12日 12:33
  • 5745

BROWSEINFO的结构介绍之获取文件(夹)路径

Visual C++(VC)中,BROWSEINFO结构中包含有用户选中目录的重要信息。 (1)BROWSEINFO结构 结构定义 typedef struct_browseinfo...
  • weikangc
  • weikangc
  • 2015年06月25日 15:32
  • 557

C语言调用SHGetSpecialFolderLocation 系统API 获取History文件夹路径参考

先来看一下如何调用系统API来获取“我的文档”路径: 很多时候“我的文档”位置经常被人移到D盘,如下是获取“我的文档”路径: #include "stdafx.h" #include  ...
  • liyun123gx
  • liyun123gx
  • 2014年10月14日 16:17
  • 1995

在树莓派 Rasbian 上安装http服务器和 ftp服务器,远程访问被封

通过这个,熟悉了很多linux的命令行指令。
  • dexinzheng
  • dexinzheng
  • 2014年11月19日 23:02
  • 1113

在Ubuntu 12.04安装和设置Samba实现网上邻居共享

在Ubuntu 12.04安装和设置Samba实现网上邻居共享   Samba 是一款功能强大的共享工具,可以实现与windows的共享,就是我们经常在windows计算机之间使用的网上邻居功能...
  • u013256622
  • u013256622
  • 2015年02月09日 20:21
  • 412

网上邻居的资料共享

为什么要使用共享?            通常,我们把要供别人看的资料上传到网络。但是,也是有的情况,我们是不必要把资料上传到网络的 情况一:假如你的资料只需要在局域网内这些用户观看就可以了,而没有必...
  • u012586898
  • u012586898
  • 2013年10月28日 11:17
  • 665

samba: 在Ubuntu 12.04安装和设置Samba实现网上邻居共享

转载:http://www.startos.com/ubuntu/tips/2012031333097_2.html Samba 是一款功能强大的共享工具,可以实现与windows的共享,就...
  • Diwat
  • Diwat
  • 2015年04月22日 14:37
  • 594

深入了解“网上邻居”原理

深入了解“网上邻居”原理 第一部分摘自: [1]http://security.ctocio.com.cn/tips/310/6646310.shtml 安全基础 深入了解“网上邻居”原理  ...
  • zyw_anquan
  • zyw_anquan
  • 2013年06月23日 16:40
  • 2003

局域网共享问题全方位解决

声明:这不是共享组建教程,而是问题解决。如果你对共享一直搞不清,那么你可以花一至几小时的时间来看这篇文章,我相信以后共享问题你基本上都能解决。    看过了很多人写共享教程,看过了更多人写共享问题解...
  • xiaotianlan
  • xiaotianlan
  • 2016年08月23日 09:09
  • 515

Windows网上邻居互访的基本条件

你可以在程序,工具里找到,打开共享,重新启动。Windows网上邻居互访的基本条件:  1) 双方计算机打开,且设置了网络共享资源; 2) 双方的计算机添加了 "Microsoft 网络文件和打...
  • novofly
  • novofly
  • 2013年03月07日 12:43
  • 708
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#中使用网上邻居
举报原因:
原因补充:

(最多只允许输入30个字)