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

ВИДЕОКУРС ВЗЛОМ
выпущен 8 октября!


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

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



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.

Как узнать, кто в данный момент присоединен через Сеть к машине в Windows NT/2000/XP (пример использования функции NetSessionEnum)

Windows NT/2000/XP: Следующий пример демонстрирует, как получить информацию о текущих соединениях при помощи функции NetSessionEnum. Пример вызывает NetSessionEnum, указывая информационный уровень 10 (b>SESSION_INFO_10).

#ifndef UNICODE
 #define UNICODE
 #endif
 
 #include <stdio.h>
 #include <assert.h>
 #include <windows.h>
 #include <lm.h>
 
 int wmain(int argc, wchar_t *argv[])
 {
    LPSESSION_INFO_10 pBuf = NULL;
    LPSESSION_INFO_10 pTmpBuf;
    DWORD dwLevel = 10;
    DWORD dwPrefMaxLen = -1;
    DWORD dwEntriesRead = 0;
    DWORD dwTotalEntries = 0;
    DWORD dwResumeHandle = 0;
    DWORD i;
    DWORD dwTotalCount = 0;
    LPTSTR pszServerName = NULL;
    LPTSTR pszClientName = NULL;
    LPTSTR pszUserName = NULL;
    NET_API_STATUS nStatus;
    //
    // Проверяем аргументы командной строки.
    //
    if (argc > 4)
    {
       wprintf(L"Usage: %s [\\\\ServerName] [\\\\ClientName] [UserName]\n", argv[0]);
       exit(1);
    }
 
    if (argc >= 2)
       pszServerName = argv[1];
 
    if (argc >= 3)
       pszClientName = argv[2];
 
    if (argc == 4)
       pszUserName = argv[3];
    //
    // Вызываем NetSessionEnum, указывая уровень 10.
    //
    do // начало do
    {
       nStatus = NetSessionEnum(pszServerName,
                                pszClientName,
                                pszUserName,
                                dwLevel,
                                (LPBYTE*)&pBuf,
                                dwPrefMaxLen,
                                &dwEntriesRead,
                                &dwTotalEntries,
                                &dwResumeHandle);
       //
       // Если вызов функции был удачен,
       //
       if ((nStatus == NERR_Success) || (nStatus == ERROR_MORE_DATA))
       {
          if ((pTmpBuf = pBuf) != NULL)
          {
             //
             // Получение результатов в цикле.
             //
             for (i = 0; (i < dwEntriesRead); i++)
             {
                assert(pTmpBuf != NULL);
 
                if (pTmpBuf == NULL)
                {
                   fprintf(stderr, "An access violation has occurred\n");
                   break;
                }
                //
                // Распечатываем полученные данные.
                //
                wprintf(L"\n\tClient: %s\n", pTmpBuf->sesi10_cname);
                wprintf(L"\tUser:   %s\n", pTmpBuf->sesi10_username);
                printf("\tActive: %d\n", pTmpBuf->sesi10_time);
                printf("\tIdle:   %d\n", pTmpBuf->sesi10_idle_time);
 
                pTmpBuf++;
                dwTotalCount++;
             }
          }
       }
       //
       // Иначе, выводим сообщение об ошибке.
       //
       else
          fprintf(stderr, "A system error has occurred: %d\n", nStatus);
       //
       // Освобождаем выделенную память.
       //
       if (pBuf != NULL)
       {
          NetApiBufferFree(pBuf);
          pBuf = NULL;
       }
    }
    //
    // Продолжаем вызывать NetSessionEnum до тех пор пока есть ещё данные.
    //
    //
    while (nStatus == ERROR_MORE_DATA); // end do
 
    // Снова проверяем выделенный буфер.
    //
    if (pBuf != NULL)
       NetApiBufferFree(pBuf);
    //
    // Отображаем окончательное количество сессий.
    //
    fprintf(stderr, "\nTotal of %d entries enumerated\n", dwTotalCount);
 
    return 0;
 }

 



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

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




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



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


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