文章分类 | 软件分类 | 最新软件 | 杀毒软件 | 实用软件  | MTV下载  | 设为首页 |
  | 下载分类 | 最近更新
您的位置: 首页 >> 文章首页 >> 网络冲浪 >> 局域网 >>  
局域网点击TOP10
·经验共享:在局域网内架设 DNS 服务器要步步谨慎2006-2-9 12:22:09
·通过集线器连接的对等网2006-2-5 12:39:42
·10元打造三机互联方案2006-2-6 6:51:31
·双机互联网速变慢故障排查2006-2-10 11:42:44
·如何才能架设一个VPN网络2006-2-9 14:20:30
·局域网内盗用IP的安全问题2006-2-5 12:17:34
·关于识别网线2006-2-5 12:49:10
·快速批量绑定MAC与IP地址2006-2-5 12:12:02
·网上安家步步高;ADSL建站初探2006-2-6 6:51:34
·枚举出局域网上所有网络资源2006-2-9 20:42:59
网络冲浪点击TOP10
·去除IE地址栏中的网址2006-2-5 12:45:08
·入侵检测系统之LIDS篇2006-2-5 10:58:21
·IP网络路由技术2006-2-9 19:14:24
·让“TE”变“IE”的移花接木大法2006-2-5 19:26:30
·巧改设置强化3389入侵2006-2-6 9:00:42
·我的常州装饰网如何建立的2006-2-5 13:35:30
·用Ipconfig获取最新的网络配置2006-2-6 10:14:20
·海阳asp木马的漏洞2006-2-5 13:51:57
·[常用]另类可执行文件压缩软件PECompact2006-2-6 7:50:02
·很酷的一篇入侵分析2006-2-5 12:35:56

 

枚举出局域网上所有网络资源
作者:我去下载           时间:2006-2-9 20:42:59


MicroSoft提供了以下几个API:WnetOpenEnum、WnetEnumResource、WNetCloseEnum及一个结构类型NETRESOURCE用于搜索局域网上的网络资源。

  其中NETRESOURCE的定义如下:

typedef struct _NETRESOURCE { // nr
 DWORD dwScope;
 DWORD dwType;
 DWORD dwDisplayType;
 DWORD dwUsage;
 LPTSTR lpLocalName;
 LPTSTR lpRemoteName;
 LPTSTR lpComment;
 LPTSTR lpProvider;
} NETRESOURCE;

  我们主要用到是dwType(资源类型:磁盘或打印机)、dwDisplayType(资源类型:服务器,域等)、dwUsage(判断是不是容器c o ntainer)、lpRemoteName(资源名称)。

  WnetOpenEnum的作用是打开某一特定的资源容器句柄给WnetEnumResource。WnetEnumResource枚举出指定容器下所有网络资源。

  下面是一个列出所有网络资源的的函数示例:

bool __fastcall TForm1::EnumerateFunc(HWND hwnd ,LPNETRESOURCE lpnr,TTreeNode * ParentNode)
{
DWORD dwResult, dwResultEnum;
HANDLE hEnum;
DWORD cbBuffer = 16384; /* 16K is reasonable size */
DWORD cEntries = 0xFFFFFFFF; /* enumerate all possible entries */
LPNETRESOURCE lpnrLocal; /* pointer to enumerated structures */
DWORD i;
dwResult = WNetOpenEnum(RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
0, /* enumerate all resources */
lpnr, /* NULL first time this function is called */
&hEnum); /* handle to resource */
if (dwResult ==67) //domain下没有可访问的主机
return true;
if (dwResult != NO_ERROR ) { //无
ShowError(dwResult);
return false;
}
TTreeNode * Child;
do {
lpnrLocal = (LPNETRESOURCE) GlobalAlloc(GPTR, cbBuffer);

dwResultEnum = WNetEnumResource(hEnum, /* resource handle */
&cEntries, /* defined locally as 0xFFFFFFFF */
lpnrLocal, /* LPNETRESOURCE */
&cbBuffer); /* buffer size */

if (dwResultEnum == NO_ERROR) {
for(i = 0; i < cEntries; i++) {
Child=TreeView1->Items->AddChild(ParentNode,lpnrLocal[i].lpRemoteName);
if(RESOURCEUSAGE_c o nTAINER ==
(lpnrLocal[i].dwUsage & RESOURCEUSAGE_c o nTAINER))
if(!EnumerateFunc(this->Handle, &lpnrLocal[i],Child))
ShowMessage("EnumerateFunc returned FALSE.");
}
}

else if (dwResultEnum != ERROR_NO_MORE_ITEMS) {
ShowError(dwResultEnum);
break;
}
}
while(dwResultEnum != ERROR_NO_MORE_ITEMS);
GlobalFree((HGLOBAL) lpnrLocal);
dwResult = WNetCloseEnum(hEnum);
if(dwResult != NO_ERROR) {
ShowError(dwResult);
return FALSE;
}
return true;
}

  需要说明在win98下,此方法列出的资源和网络邻居列出的是一样,和网络邻居一样,有时列出的数据并不准确,可能会有一些域或机器不能找到。

分页:
相关文章:
Copyright© 2005-2006 wqxz.com, All Rights Reserved. 购买虚拟主机请与本站联系