⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_58257.htm

📁 vc
💻 HTM
字号:
<p>
序号:58257 发表者:猪啊 发表日期:2003-10-31 08:35:21
<br>主题:寻NetShareEnum例子
<br>内容:使用它搜索共享的例子,谢谢
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:wjb 回复日期:2003-10-31 09:34:24
<br>内容:MSDN中的例子:<BR><BR>#define UNICODE<BR>#include &lt;windows.h&gt;<BR>#include &lt;stdio.h&gt;<BR>#include &lt;lm.h&gt;<BR><BR>void wmain( int argc, TCHAR *lpszArgv[ ])<BR>{<BR>&nbsp;&nbsp; PSHARE_INFO_502 BufPtr,p;<BR>&nbsp;&nbsp; NET_API_STATUS res;<BR>&nbsp;&nbsp; LPTSTR&nbsp;&nbsp; lpszServer = NULL;<BR>&nbsp;&nbsp; DWORD er=0,tr=0,resume=0, i;<BR><BR>&nbsp;&nbsp; switch(argc)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp; case 2:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpszServer = lpszArgv[1];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp; default:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;Usage: NetShareEnum &lt;servername&gt;\n&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; //<BR>&nbsp;&nbsp; // Print a report header.<BR>&nbsp;&nbsp; //<BR>&nbsp;&nbsp; printf(&#34;Share:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Local Path:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Uses:&nbsp;&nbsp; Descriptor:\n&#34;);<BR>&nbsp;&nbsp; printf(&#34;---------------------------------------------------------------------\n&#34;);<BR>&nbsp;&nbsp; //<BR>&nbsp;&nbsp; // Call the NetShareEnum function; specify level 502.<BR>&nbsp;&nbsp; //<BR>&nbsp;&nbsp; do // begin do<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res = NetShareEnum (lpszServer, 502, (LPBYTE *) &amp;BufPtr, -1, &amp;er, &amp;tr, &amp;resume);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// If the call succeeds,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(res == ERROR_SUCCESS || res == ERROR_MORE_DATA)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p=BufPtr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Loop through the entries;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;print retrieved data.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=1;i&lt;=er;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;%-20S%-30S%-8u&#34;,p-&gt;shi502_netname, p-&gt;shi502_path, p-&gt;shi502_current_uses);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Validate the value of the <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;shi502_security_descriptor member.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (IsValidSecurityDescriptor(p-&gt;shi502_security_descriptor))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#34;Yes\n&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#34;No\n&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Free the allocated buffer.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetApiBufferFree(BufPtr);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#34;Error: %ld\n&#34;,res);<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; // Continue to call NetShareEnum while <BR>&nbsp;&nbsp; //&nbsp;&nbsp;there are more entries. <BR>&nbsp;&nbsp; // <BR>&nbsp;&nbsp; while (res==ERROR_MORE_DATA); // end do<BR>&nbsp;&nbsp; return;<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:猪啊 回复日期:2003-10-31 09:36:53
<br>内容:谢谢!这个例子我已经看过了<BR>我想看实际应用中比较具体的例子
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:wjb 回复日期:2003-10-31 09:40:28
<br>内容:下面的例子是否有包含NetShareEnum不是很清楚,但是可以列举共享。看是否有用。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:猪啊 回复日期:2003-10-31 09:50:58
<br>内容:看了,那一步偶已经作好了,枚举局域网中的资源,我不会下一步,就是枚举出所有的共享文件(文件夹)<BR>上一步用的是WNetEnumResource,下一步我开始用WNetAddConnection2,但是似乎不行,也许要用NetShareEnum,不会用,只找到下面:<BR><BR><BR>扫描隐藏共享可以使用NetShareEnum 函数,这个函数在win2000中和win98中用法不一样。win2000中从netapi32.dll中的调用,详情请查看微软的帮助-MSDN。定义如下&nbsp;&nbsp;<BR>TNetShareEnumNT=function (<BR>&nbsp;&nbsp;// win2000的netapi32.dll中的NetShareEnum 函数<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; servername:PWideChar;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; level:DWORD;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var Buf:PSHARE_INFO_1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prefmaxlen:longint;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var entriesread:DWORD;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var totalentries:DWORD;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var resume_handle:DWORD<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ):NET_API_STATUS;stdcall;<BR>使用方法:<BR>var<BR>&nbsp;&nbsp; hNetApiDll: HMODULE;<BR>&nbsp;&nbsp; //下列为动态定义<BR>&nbsp;&nbsp; NetShareEnumNT :TNetShareEnumNT;<BR>&nbsp;&nbsp; //win2000操作系统下可以静态定义为external 'netapi32.dll' name 'NetShareEnum';<BR>begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hNetApiDll:=LoadLibrary('netapi32.dll');<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@NetShareEnumNT:=GetProcAddress(hNetApiDll, 'NetShareEnum');<BR><BR>end;<BR><BR><BR>////////////////////<BR>但是我看得不大明白,想再找一个<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:wjb 回复日期:2003-10-31 12:07:46
<br>内容:1. NetShareEnum和WNetShareEnum作用是一样的,区别就是前者可以获得隐藏的共享连接。<BR>2. WNetAddConnection2是把共享连接映射为本地的一个资源,需要填写一些参数。至少是lpLocalName。比如lpLocalName=&#34;g:&#34;是指定为G盘。还有用户和口令。<BR>3.枚举出所有的共享文件根本不再需要NET函数了。直接当做一个网络路径进行操作就可以了。比如使用CFileFind进行查找,路径使用lpRemoteName内容。<BR><BR>希望俺没有理解错误。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:猪啊 回复日期:2003-10-31 15:39:57
<br>内容:偶试了一下,CFileFind 只能搜索本地计算机的文件,没办法用来查找网络路径的吧?<BR>还有,msdn里查不到WNetShareEnum阿
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:wjb 回复日期:2003-10-31 15:49:13
<br>内容:1.比如网络路径:\\share1\pub<BR>CFileFind ff;<BR>ff.FindFile(&#34;\\\\share1\\pub\\*.*&#34;)<BR>2.抱歉,写错了。NetShareEnum对应的是WNetEnumResource。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:猪啊 回复日期:2003-10-31 15:56:50
<br>内容:又试了一下,FindFile(&#34;\\\\share1\\pub\*.*&#34;)可以<BR>但是如果只给出网络路径,没有文件夹FindFile(&#34;\\\\share1\\*.*&#34;)就不行了<BR>WNetEnumResource只能枚举网络中的所有计算机,但是没办法把所有共享资源都枚举出来吧??
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:猪啊 回复日期:2003-10-31 16:02:14
<br>内容:不介意的话,把msn或者QQ告诉我好不好?这个速度我等到明天也要不到我想要的东西拉~<BR>谢谢,当然,如果介意的话就continue~:)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:wjb 回复日期:2003-10-31 16:04:24
<br>内容:msn: xuexier@hotmail.com
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:猪啊 回复日期:2003-11-03 08:39:26
<br>内容:thanks a lot
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -