Функция NetSessionGetInfo (lmshare.h)
Извлекает сведения о сеансе, установленном между определенным сервером и рабочей станцией.
Синтаксис
NET_API_STATUS NET_API_FUNCTION NetSessionGetInfo(
[in] LMSTR servername,
[in] LMSTR UncClientName,
[in] LMSTR username,
[in] DWORD level,
[out] LPBYTE *bufptr
);
Параметры
[in] servername
Указатель на строку, указывающую DNS- или NetBIOS-имя удаленного сервера, на котором выполняется функция. Если этот параметр имеет значение NULL, используется локальный компьютер.
[in] UncClientName
Указатель на строку, указывающую имя сеанса компьютера, для которого должны быть возвращены сведения. Этот параметр является обязательным и не может иметь значение NULL. Дополнительные сведения см. в статье NetSessionEnum.
[in] username
Указатель на строку, указывающую имя пользователя, сведения о сеансе которого должны быть возвращены. Этот параметр является обязательным и не может иметь значение NULL.
[in] level
Задает уровень информации данных. Этот параметр может принимать одно из указанных ниже значений.
Значение | Значение |
---|---|
|
Возвращает имя компьютера, на который был установлен сеанс.
Параметр bufptr указывает на структуру SESSION_INFO_0 . |
|
Возвращает имя компьютера, имя пользователя и открытые файлы, каналы и устройства на компьютере.
Параметр bufptr указывает на SESSION_INFO_1 структуру. |
|
В дополнение к сведениям, указанным для уровня 1, возвращается тип клиента и способ установки сеанса пользователем.
Параметр bufptr указывает на структуру SESSION_INFO_2 . |
|
Возвращает имя компьютера; имя пользователя; и время активного и простоя сеанса.
Параметр bufptr указывает на SESSION_INFO_10 структуру. |
[out] bufptr
Указатель на буфер, который получает данные. Формат этих данных зависит от значения параметра level . Дополнительные сведения см. в разделах Буферы функций управления сетью и Длина буфера функции управления сетью.
Этот буфер выделяется системой и должен быть освобожден с помощью функции NetApiBufferFree .
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение будет NERR_Success.
Если функция завершается ошибкой, возвращаемое значение может быть одним из следующих кодов ошибок.
Код возврата | Описание |
---|---|
|
Пользователь не имеет доступа к запрошенной информации. |
|
Недопустимое значение, указанное для параметра level . |
|
Указанный параметр недопустим. |
|
Недостаточно памяти. |
|
Сеанс с именем компьютера не существует. |
|
Недопустимое имя компьютера. |
|
Не удалось найти имя пользователя. |
Комментарии
Только члены локальной группы Администраторы или Операторы сервера могут успешно выполнять функцию NetSessionGetInfo на уровне 1 или 2. Для звонков уровня 0 или 10 не требуется специальное членство в группах.
При программировании для Active Directory вы можете вызвать определенные методы ИНТЕРФЕЙСА службы Active Directory (ADSI), чтобы достичь тех же функций, которые можно достичь, вызывая функции сеанса управления сетью. Дополнительные сведения см. в разделах IADsSession и IADsFileServiceOperations.
Если вы вызываете эту функцию на уровне сведений 1 или 2 на рядовом сервере или рабочей станции, все пользователи, прошедшие проверку подлинности, смогут просматривать сведения.
Примеры
В следующем примере кода показано, как получить сведения о сеансе с помощью вызова функции NetSessionGetInfo . Пример вызывает NetSessionGetInfo, указывая уровень сведений 10 ( SESSION_INFO_10). Если вызов выполнен успешно, код выводит сведения о сеансе. Наконец, образец освобождает память, выделенную для информационного буфера.
#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "Netapi32.lib")
#include <stdio.h>
#include <windows.h>
#include <lm.h>
int wmain(int argc, wchar_t *argv[])
{
DWORD dwLevel = 10;
LPSESSION_INFO_10 pBuf = NULL;
LPTSTR pszServerName = NULL;
LPTSTR pszUNCClientName = NULL;
LPTSTR pszUserName = NULL;
NET_API_STATUS nStatus;
//
// Check command line arguments.
//
if (argc == 3)
{
pszUNCClientName = argv[1];
pszUserName = argv[2];
}
else if (argc == 4)
{
pszServerName = argv[1];
pszUNCClientName = argv[2];
pszUserName = argv[3];
}
else
{
wprintf(L"Usage: %s [\\\\ServerName] \\\\ClientName UserName\n", argv[0]);
exit(1);
}
//
// Call the NetSessionGetInfo function, specifying level 10.
//
nStatus = NetSessionGetInfo(pszServerName,
pszUNCClientName,
pszUserName,
dwLevel,
(LPBYTE *)&pBuf);
//
// If the call succeeds,
//
if (nStatus == NERR_Success)
{
if (pBuf != NULL)
{
//
// Print the session information.
//
wprintf(L"\n\tClient: %s\n", pBuf->sesi10_cname);
wprintf(L"\tUser: %s\n", pBuf->sesi10_username);
printf("\tActive: %d\n", pBuf->sesi10_time);
printf("\tIdle: %d\n", pBuf->sesi10_idle_time);
}
}
//
// Otherwise, indicate a system error.
//
else
fprintf(stderr, "A system error has occurred: %d\n", nStatus);
//
// Free the allocated memory.
//
if (pBuf != NULL)
NetApiBufferFree(pBuf);
return 0;
}
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | lmshare.h (включая Lm.h) |
Библиотека | Netapi32.lib |
DLL | Netapi32.dll |