📄 enumnetresource代码.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 + -