zoukankan      html  css  js  c++  java
  • 方法:如何获取远程PC所有共享资源

    转载请注明来源:http://www.cnblogs.com/xuesongshu/

      在一网热心网友的帮助下我解决的NetShareEnum返回NO_ACCESSS_DENIED(5)的问题。可惜网上相关资料实在找不着。我决定把我的方法分享给更多的网友们,希望能帮助到更多的人。

      SHARE_INFO_2、SHARE_INFO_502、SHARE_INFO_503适合于遍历1个共享资源里所有目录。如果用它们获取远程PC有多少共享资源,它就返回5。SHARE_INFO_0、SHARE_INFO_1才适合获取远程PC有多少共享资源。看到这一点,想必网友们已经想到方法了。我的代码如下:

    void EnumShareResources()
    {
    	//PSHARE_INFO_1 pShareTmp=NULL,pShareBuffer=NULL;
    	PSHARE_INFO_0 pShareTmp=NULL,pShareBuffer=NULL;
    	NET_API_STATUS netApiStat=ERROR_SUCCESS;
    	DWORD dwEr=0,dwTr=0,dwResume=0,i=0,dwEnumOpenStat=0,dwEnumEnumStat=0;
    	char* pcHost=(char*)calloc(64,sizeof(char));
    	LPWSTR szWideIp=(LPWSTR)calloc(32,sizeof(WCHAR));
    	BOOL bFind=FALSE;
    	sprintf(pcHost,"%d.%d.%d.%d",192,168,10,183);
    	//GetHostNameByIp(pcHost);
    	//i=MultiByteToWideChar(CP_ACP,0,pcIp,-1,NULL,0);
    	MultiByteToWideChar(CP_ACP,0,pcHost,-1,szWideIp,64);
    	memcpy(pcHost,szWideIp,64);
    	do 
    	{
    		//netApiStat=NetShareEnum(pcHost,1,(LPBYTE*)&pShareBuffer,-1,&dwEr,&dwTr,&dwResume);
    		netApiStat=NetShareEnum(pcHost,0,(LPBYTE*)&pShareBuffer,-1,&dwEr,&dwTr,&dwResume);
    		if (netApiStat==ERROR_MORE_DATA||netApiStat==ERROR_SUCCESS)
    		{
    			pShareTmp=pShareBuffer;
    			for (i=0;i<dwEr;i++)
    			{
    				//wprintf(L"%-20s%-8d%-20s",pShareTmp->shi1_netname,pShareTmp->shi1_type,pShareTmp->shi1_remark);
    				wprintf(L"%20s",pShareTmp->shi0_netname);
    				printf("\r\n");
    				pShareTmp++;
    			}
    			NetApiBufferFree(pShareTmp);
    		}
    
    	} while (netApiStat==ERROR_MORE_DATA);
    }
    

      被注释部分使用的是SHARE_INFO_1。

  • 相关阅读:
    JavaScript——封装
    Vue.js——component(组件)
    MySQL数据库——安装教程(5.7版本)
    Vue.js——循环(Java、JSTL标签库、数据库)
    Vue.js——理解与创建使用
    JavaScript——闭包
    自定义最小索引优先队列
    自定义最大索引优先队列
    自定义最小优先队列
    自定义最大优先队列
  • 原文地址:https://www.cnblogs.com/xuesongshu/p/2937984.html
Copyright © 2011-2022 走看看