Как перечислить сетевые подключения

Из командной строки MS-DOS, для просмотра сетевых ресурсов (дисков), к которым подключён компьютер, используется следующая команда:

net use

Прогрммно, для того, чтобы начать перечисление подключённых сетевых ресурсов необходимо вызвать функцию WNetOpenEnum() и WNetEnumResources() для продолжения перечисления.

Следующий пример перечисляет сетевые соединения.

ЗАМЕЧАНИЕ: Необходимо включить в проект библиотеку mpr.lib, в которой хранятся функции WNet*.

Пример кода

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

void main()
{
DWORD dwResult;
HANDLE hEnum;
DWORD cbBuffer = 16384;
DWORD cEntries = 0xFFFFFFFF;
LPNETRESOURCE lpnrDrv;
DWORD i;

dwResult = WNetOpenEnum( RESOURCE_CONNECTED,
RESOURCETYPE_ANY,
0,
NULL,
&hEnum );

if (dwResult != NO_ERROR)
{
printf( "\nCannot enumerate network drives.\n" );
return;
}

printf( "\nNetwork drives:\n\n" );

do
{
lpnrDrv = (LPNETRESOURCE) GlobalAlloc( GPTR, cbBuffer );

dwResult = WNetEnumResource( hEnum, &cEntries, lpnrDrv, &cbBuffer
);

if (dwResult == NO_ERROR)
{
for( i = 0; i < cEntries; i++ )
{
if( lpnrDrv[i].lpLocalName != NULL )
{
printf( "%s\t%s\n", lpnrDrv[i].lpLocalName,
lpnrDrv[i].lpRemoteName );
}
}
}
else if( dwResult != ERROR_NO_MORE_ITEMS )
{
printf( "Cannot complete network drive enumeration" );
GlobalFree( (HGLOBAL) lpnrDrv );
break;
}
GlobalFree( (HGLOBAL) lpnrDrv );
}
while( dwResult != ERROR_NO_MORE_ITEMS );

WNetCloseEnum(hEnum);
 
« Предыдущая статья   Следующая статья »