Поделиться через


Функция 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

Задает уровень информации данных. Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
100
Возвращает сведения о среде рабочей станции, включая сведения о конкретной платформе, имя домена и локального компьютера, а также сведения об операционной системе. Параметр bufptr указывает на структуру WKSTA_INFO_100 .
101
В дополнение к сведениям уровня 100 возвращается путь к каталогу LANMAN. Параметр bufptr указывает на структуру WKSTA_INFO_101 .
102
Помимо сведений уровня 101, возвращается количество пользователей, выполнивших вход на локальный компьютер. Параметр bufptr указывает на структуру WKSTA_INFO_102 .

[out] bufptr

Указатель на буфер, который получает данные. Формат этих данных зависит от значения параметра level . Этот буфер выделяется системой и должен быть освобожден с помощью функции NetApiBufferFree . Дополнительные сведения см. в разделах Буферы функций управления сетью и Длина буфера функции управления сетью.

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение будет NERR_Success.

Если функция завершается ошибкой, возвращаемое значение может быть одним из следующих кодов ошибок.

Код возврата Описание
ERROR_ACCESS_DENIED
Пользователь не имеет доступа к запрошенной информации.
ERROR_INVALID_LEVEL
Недопустимый параметр 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

См. также раздел

NetWkstaSetInfo

Функции управления сетью

Общие сведения об управлении сетью

WKSTA_INFO_100

WKSTA_INFO_101

WKSTA_INFO_102

Рабочие станции и пользовательские функции рабочей станции