Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Возможности языков семейства Си по истине безграничны, однако, в этой свободе кроются и недостатки: всегда нужно программисту держать ухо востро и контроллировать "переполнение буфера", чтобы потом программа не вылетала в "синий экран" на массе разнообразных версий Windows и железа у пользователей. Те же крэкеры и реверсеры специально ищут в коде программ на Си уязвимости, куда можно подсадить любой вирусный код, об этом более подробно автор рассказывал в своём видеокурсе здесь. Я там многое узнал и теперь мой код стал значительно более безопасный.

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

Из командной строки 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);
    }

 



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS