利用DirectoryEntry组件来查看网络所有电脑及用户
发布时间: 2010-04-27 06:33:25 约 83 人浏览
"N年前",在一个MOSS2007开发的项目上,客户提出有这样一个需求,有没有办法列出局域网中的所有计算机及用户呢?
代码
办法当然会有很多种喽...KAKIM当然喜欢的是简洁易懂而又能实现功能的代码,所以后来就用了DirectoryEntry类
创建了一个DirectoryEntry实例,将它的Path设为"WinNT:"(可以后面跟domain,如WinNT://your domain),以通过对它的所有子项的递归枚举来发现网络上的所有域(以及工作组)。就可以发现网络上的所有计算机及用户名
代码
private
void
GetChildren(DirectoryEntry entry, TreeNode entryNode)
{
if
(entry.Children
!=
null
)
{
foreach
(DirectoryEntry
de
in
entry.Children)
{
if
(de.SchemaClassName
==
"
User
"
||
de.SchemaClassName
==
"
Computer
"
||
de.SchemaClassName
==
"
Domain
"
)
{
TreeNode _node
=
new
TreeNode(de.Name);
entryNode.Nodes.Add(_node);
GetChildren(de, _node);
}
}
}
}
private
void
GetNTUser()
{
try
{
using
(DirectoryEntry
root
=
new
DirectoryEntry(
"
WinNT:
"
))
{
TreeNode node
=
new
TreeNode(root.Name);
treeView1.Nodes.Add(node);
GetChildren(root, node);
}
}
catch
{ }
}
private
void
Form1_Load(
object
sender, EventArgs
e)
{
GetNTUser();
}
所以,搜出结果如下图
关于DirectoryEntry 类的用法,不防参考一下MSDN,这里就不重复了
本文介绍了一种利用DirectoryEntry组件来查找并列出局域网内所有计算机及用户的方法。通过设置DirectoryEntry的Path属性为WinNT:并递归遍历其子项,可以有效获取网络上的所有域及工作组信息。
2358

被折叠的 条评论
为什么被折叠?



