- 热门文章:
- · GOOGLE搜索从入门到精通v3.0
- · 数据加密技术介绍
- · 给Windows目录加口令的特殊方法
- · 通过连接实例解读TCP/IP协议
- · 从管理角度谈病毒与数据安全
- · 计算机加密反跟踪技术密文技术和实例
- · 主动防御入侵
- · URL欺骗
- · 彻底封杀Ping漏洞
- · 精确对时:增加Internet时间服务器
- · 清除电脑中的 卧底 软件
- · "超级密码卫士"让你的密码更安全
网络资源的列举
首先来看一下我们要用到的两个相关api函数:
◆dword wnetopenenum(
dword dwscope, // 指定列举范围
dword dwtype, // 列举资源的类型
dword dwusage, // 指定列举资源的使用情况
lpnetresource lpnetresource, // 指向netresource结构的指针,指定要列举的资源
lphandle lphenum //指向列举句柄,用在后面的wnetenumresource中
);
参数dwscope可以是下列值之一或其组合:
resource_connected 所有当前连接着的资源(将忽略dwusage参数)
resource_globalnet 所有的网络资源
resource_remembered 所有记住的(永久)连接(将忽略dwusage参数)
参数dwtype可以是下列值之一或其组合:
resourcetype_any 所有资源(不能与resourcetype_disk和resource_print组合)
resourcetype_disk 仅所有磁盘资源
resourcetype_print 仅所有打印资源
参数dwusage可以是下列值之一或其组合:
0 所有资源
resourceusage_connectable 所有可连接的资源
resourceusage_container 所有包容器资源
参数lpnetresource指向netresource结构,该结构指定了要列举的包容器(container),如果此参数为null则表示列举网络的根(root)
函数调用正确的话, 返回值为no_error,否则返回下列错误代码之一:
error_not_container 表示lpnetresource参数没有指向包容器
error_invalid_parameter dwscope或dwtype参数无效或参数组合错误
error_no_network 没有网络存在
◆dword wnetenumresource(
handle henum, // 列举句柄
lpdword lpccount, // 列举资源最大个数
lpvoid lpbuffer, // 指向接收列举结果的缓冲区,填充的实际是netresource结构数组的形式
lpdword lpbuffersize // 指向一个dword变量,该变量指出了lpbuffer的大小
);
这两个函数中都用到了一个重要的结构netresource,netresource结构如下:
typedef struct _netresourcea {
dword dwscope;// 指定列举范围
dword dwtype;// 列举资源的类型
dword dwdisplaytype;//网络对象展示给用户的类型
dword dwusage;// 指定列举资源的使用情况
lpstr lplocalname;//本地设备名
lpstr lpremotename;//远程设备名
lpstr lpcomment ;
lpstr lpprovider;//资源提供者的名字
}netresource;
参数dwdisplaytype可以是下列值之一:
resourcedisplaytype_domain 显示为一个domain
resourcedisplaytype_generic
resourcedisplaytype_server 显示为一个服务器
resourcedisplaytype_share 显示为一个共享资源
关于wnetenumresource的调用参数都很简单,这里就不再详细指出了,下面我们用编程实现列举所有网络资源,并将其填充到一个ttreeview中
首先打开c++builder创建一个新程序
然后在unit1.cpp的首部写入下面的函数:
bool __fastcall getnetres(ttreenodes *nodes,ttreenode * node, netresource * pnetresource, int depth)
{
//这是一个嵌套函数,其中nodes为指定tlistview实例的items,node为从指定节点扩展null为跟节点,pnetresource为列举根,
//depth为列//举深度,填入一个小于0的数,则深度为无穷,直到列举完毕
#define enumbufsize (16*1024)
#define enumcount 10
if (nodes==null) return false;
if (depth==0) return true;
handle henum;
bool revalue=true;
netresource *pnetres,netres;
if(wnetopenenum(resource_globalnet,resourcetype_any,0,pnetresource,&henum)!=no_error) return false;
char buf[enumbufsize];
dword ecount=enumcount;
dword esize=enumbufsize;
dword enumrst;
do{
enumrst=wnetenumresource(henum,&ecount,buf,&esize);
if (esize>enumbufsize) return false;
if (enumrst==no_error){
for (dword num=0;num pnetres=((netresource*)(buf+sizeof(netresource)*num));
ttreenode *tnode=nodes->addchild(node,ansistring(pnetres->lpremotename));
if (pnetres->dwdisplaytype!=resourcedisplaytype_share)
if(!getnetres(nodes,tnode,pnetres,depth-1)) revalue=false;
}
}
}while(ecount==enumcount);
if (enumrst!=error_no_more_items&&enumrst!=no_error) revalue=false;
wnetcloseenum(henum);
return revalue;
}
然后在tform1的formcreate事件中,写入代码,如下:
void __fastcall tform1::formcreate(tobject *sender)
{
caption="列举网络资源实例";
ttreeview *treeview1=new ttreeview(this);//创建一个ttreeview实例
treeview1->parent=this;
treeview1->left=10;
treeview1->top=10;
treeview1->width=clientwidth-20;
treeview1->height=clientheight-20;
if (!getnetres(treeview1->items,null,null,-1))//调用getnetres函数,从网络的根列举,并将数据添加到treeview1的根节点
showmessage("列举中出现了错误,可能是由一些资源的访问需要用户名和密码引起的!");
if (treeview1->items->item[0]!=null)
treeview1->items->item[0]->expand(false); //展开
}
()
下一篇:GOOGLE搜索从入门到精通v3.0 >>
相关文章:
- · Funlove.4608的源代码
- · 再谈进程与端口的映射
- · DOS攻击原理以及常见方法介绍
- · 关于两个常用网络命令原理和一点说明
- · Ghost指南--还我干净的系统
- · 流行木马大清除
- · 黑客社团的动机和心理
- · 宽带网技术介绍
- · 肉眼识病毒
- · 细说本.拉登病毒邮件三大特征与两种感染方式
- · IloveU病毒专题
- · IP 伪 装 法
- · 典型DoS攻击原理及抵御措施
- · 黑客初步技术
- · 弹出式域名的深入研究
- · html源代码攻防战
- · 破解电话
- · 黑色的工具
- · Security Issues in Perl Scripts
- · 网络应用技巧与故障问答
- · 服务器终极安全设置与优化指南
- · NetLimiter助你随意分配网络带宽
- · 防范技巧:防止黑客利用TTL值来鉴别操作系统
- · 上网助手,清除垃圾该出手就出手
- · windows下越界一个字节也能导致溢出攻击
- · 用汇编遍历Windows局域网共享目录,病毒传染技术之一
- · DOS工作站加盟NT网
- · DNS的解析原理
- · DNS 问答
- · ICMP,IGMP,TCP监听,UDP监听和NETBIOS小介绍
- · CA 配置(Certificate Server)
- · 网管的困惑:域控制器哪去了
- · ADSI及其在WEB上的应用
- · 流光IV插件编写
- · 技巧:多种途径访问局域网中的计算机
- · 如何面对高水平的破解组织 谈暴力破解应对
- · 安全防范:黑客Web欺骗的工作原理和解决方案
- · 局域网管理:揭开网速奇慢无比之谜
