Функция NetWkstaGetInfo (lmwksta.h)
Функция NetWkstaGetInfo возвращает сведения о конфигурации рабочей станции.
Синтаксис
NET_API_STATUS NET_API_FUNCTION NetWkstaGetInfo(
[in] LMSTR servername,
[in] DWORD level,
[out] LPBYTE *bufptr
);
Параметры
[in] servername
Указатель на строку, указывающую DNS- или NetBIOS-имя удаленного сервера, на котором выполняется функция. Если этот параметр имеет значение NULL, используется локальный компьютер.
[in] level
Задает уровень информации данных. Этот параметр может принимать одно из указанных ниже значений.
Значение | Значение |
---|---|
|
Возвращает сведения о среде рабочей станции, включая сведения о конкретной платформе, имя домена и локального компьютера, а также сведения об операционной системе. Параметр bufptr указывает на структуру WKSTA_INFO_100 . |
|
В дополнение к сведениям уровня 100 возвращается путь к каталогу LANMAN. Параметр bufptr указывает на структуру WKSTA_INFO_101 . |
|
Помимо сведений уровня 101, возвращается количество пользователей, выполнивших вход на локальный компьютер. Параметр bufptr указывает на структуру WKSTA_INFO_102 . |
[out] bufptr
Указатель на буфер, который получает данные. Формат этих данных зависит от значения параметра level . Этот буфер выделяется системой и должен быть освобожден с помощью функции NetApiBufferFree . Дополнительные сведения см. в разделах Буферы функций управления сетью и Длина буфера функции управления сетью.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение будет NERR_Success.
Если функция завершается ошибкой, возвращаемое значение может быть одним из следующих кодов ошибок.
Код возврата | Описание |
---|---|
|
Пользователь не имеет доступа к запрошенной информации. |
|
Недопустимый параметр level . |
Комментарии
Windows Server 2003 и Windows XP: Если вы вызываете эту функцию на контроллере домена под управлением Active Directory, доступ разрешен или запрещен на основе списка управления доступом для защищаемого объекта. Чтобы включить анонимный доступ, анонимный пользователь должен быть членом группы доступа, совместимой с Windows 2000. Это связано с тем, что анонимные маркеры не включают идентификатор безопасности группы Все по умолчанию. Если вы вызываете эту функцию на рядовом сервере или рабочей станции, все пользователи, прошедшие проверку подлинности, смогут просматривать сведения. Анонимный доступ также разрешен, если параметр политики EveryoneIncludesAnonymous разрешает анонимный доступ. Анонимный доступ всегда разрешен для уровня 100. Если вы вызываете эту функцию на уровне 101, пользователи, прошедшие проверку подлинности, смогут просматривать сведения. Члены локальных групп "Администраторы", "Сервер", "Системный оператор" и "Оператор печати" могут просматривать сведения на уровнях 102 и 502. Дополнительные сведения об ограничении анонимного доступа см. в разделе Требования к безопасности для функций управления сетью. Дополнительные сведения о списках управления доступом, ACE и маркерах доступа см. в разделе модель контроль доступа.
Windows 2000: Если вы вызываете эту функцию на контроллере домена под управлением Active Directory, доступ разрешен или запрещен на основе списка управления доступом (ACL) для защищаемого объекта. Список управления доступом по умолчанию позволяет просматривать сведения всем пользователям, прошедшим проверку подлинности, и членам группы " Доступ, совместимый с Windows 2000". По умолчанию в группу "Доступ, совместимый с Windows 2000", входят все. Это обеспечивает анонимный доступ к информации, если система разрешает анонимный доступ. Если вы вызываете эту функцию на рядовом сервере или рабочей станции, все пользователи, прошедшие проверку подлинности, смогут просматривать сведения. Анонимный доступ также разрешен, если параметр политики RestrictAnonymous разрешает анонимный доступ.
Чтобы скомпилировать приложение, использующее эту функцию, определите макрос _WIN32_WINNT как 0x0400 или более поздней версии. Дополнительные сведения см. в разделе Использование заголовков Windows.
Примеры
В следующем примере кода показано, как получить сведения об элементах конфигурации для рабочей станции с помощью вызова функции NetWkstaGetInfo . Пример вызывает NetWkstaGetInfo, указывая уровень сведений 102 ( WKSTA_INFO_102). Если вызов выполнен успешно, образец выводит сведения о рабочей станции. Наконец, пример кода освобождает память, выделенную для информационного буфера.
#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 = 102;
LPWKSTA_INFO_102 pBuf = NULL;
NET_API_STATUS nStatus;
LPWSTR pszServerName = NULL;
//
// Check command line arguments.
//
if (argc > 2)
{
fwprintf(stderr, L"Usage: %s [\\\\ServerName]\n", argv[0]);
exit(1);
}
// The server is not the default local computer.
//
if (argc == 2)
pszServerName = argv[1];
//
// Call the NetWkstaGetInfo function, specifying level 102.
//
nStatus = NetWkstaGetInfo(pszServerName,
dwLevel,
(LPBYTE *)&pBuf);
//
// If the call is successful,
// print the workstation data.
//
if (nStatus == NERR_Success)
{
printf("\n\tPlatform: %d\n", pBuf->wki102_platform_id);
wprintf(L"\tName: %s\n", pBuf->wki102_computername);
printf("\tVersion: %d.%d\n", pBuf->wki102_ver_major,
pBuf->wki102_ver_minor);
wprintf(L"\tDomain: %s\n", pBuf->wki102_langroup);
wprintf(L"\tLan Root: %s\n", pBuf->wki102_lanroot);
wprintf(L"\t# Logged On Users: %d\n", pBuf->wki102_logged_on_users);
}
//
// Otherwise, indicate the 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 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | lmwksta.h (включая Lm.h) |
Библиотека | Netapi32.lib |
DLL | Netapi32.dll |