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

📄 enumnetresource代码.cpp

📁 黑客编程代码enumnetresource代码.rar
💻 CPP
字号:
////////////////////////////////////////////////////////////////////////////////
//      
//      Enum NETResource
//      
//      File      : EnumNETResource.cpp
//      
//      Create at : 2002.3.19
//      Create by : refdom
//		Email	  : refdom@263.net
//		Home Page : www.opengram.com
//
//		If you modify the code, or add more functions, please email me a copy.
//      
////////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <windows.h>
#include <winnetwk.h>

#pragma comment (lib, "Mpr.lib")

#define BUFFER_SIZE (16384)

void MyEnumResources(HANDLE, int);

int main (void)
{
	HANDLE hEnum = NULL;
	if (WNetOpenEnum (RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, NULL, &hEnum) != NO_ERROR)
	{
		printf ("Error!\n");
		return 0;
	}
	MyEnumResources (hEnum, 0);
	WNetCloseEnum (hEnum);
	return 0;
}

void MyEnumResources (HANDLE hEnum, int Layer)
{
	DWORD dwSize = BUFFER_SIZE;
	DWORD dwCount = -1;
	const char* pDisplayType = NULL;
	const char* pType = NULL;
	int i, n, nLayer, nRetCode;
	nLayer = Layer;

	LPNETRESOURCE lpNET;
	lpNET  =  (LPNETRESOURCE) malloc (dwSize);

	if (lpNET == NULL)
	{
		puts ("Not enough memory\n");
		return;
	}

	if (WNetEnumResource (hEnum, &dwCount, (LPVOID)lpNET, &dwSize) != NO_ERROR)
		goto Exit0;

	for (i = 0; i < (int) dwCount; i++)
	{
		switch (lpNET[i].dwDisplayType)
		{
		case RESOURCEDISPLAYTYPE_DOMAIN:
			pDisplayType = "DOMAIN: ";
			break;
		case RESOURCEDISPLAYTYPE_SERVER:
			pDisplayType = "SERVER: ";
			break;
		case RESOURCEDISPLAYTYPE_SHARE:
			pDisplayType = "SHARE: ";
			switch (lpNET[i].dwType)	
			{
			case RESOURCETYPE_DISK:
				pType = "DISK: ";
				break;
			case RESOURCETYPE_PRINT:
				pType = "PRINTER: ";
				break;
			default:
				pType = "UNKNOWN: ";
				break;
			}
			break;
		case RESOURCEDISPLAYTYPE_GENERIC:
			pDisplayType = "GENERIC: ";
			break;
		default:
			pDisplayType = "UNKNOWN: ";
			break;
		}

		for (n = 0 ; n < nLayer; n++)
		{
			printf ("\t");
		}
		if (lpNET[i].dwDisplayType == RESOURCEDISPLAYTYPE_SHARE)
			printf ("%s %s %s\n", pDisplayType, pType, lpNET[i].lpRemoteName);
		else
			printf ("%s %s\n", pDisplayType, lpNET[i].lpRemoteName);

		if (lpNET[i].dwUsage & RESOURCEUSAGE_CONTAINER)
		{
			HANDLE hCONTAINER;
			nRetCode = WNetOpenEnum (RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, &lpNET[i], &hCONTAINER);
			if ( nRetCode == NO_ERROR)
			{
				MyEnumResources (hCONTAINER, nLayer+1);
				WNetCloseEnum (hCONTAINER);
			}
			else
			{
				for (n = 0 ; n <= nLayer; n++)
					printf ("\t");
				printf ("Error:");
				if (nRetCode == ERROR_NO_NETWORK)
					printf ("The network is unavailable.\n");
				else if (nRetCode == 5)
					printf ("Access Denial.\n");
				else
					printf ("%d\n", GetLastError());
			}
		}
	}

Exit0:

	free (lpNET);
	return;
}

⌨️ 快捷键说明

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