Compartilhar via


Função NetWkstaGetInfo (lmwksta.h)

A função NetWkstaGetInfo retorna informações sobre a configuração de uma estação de trabalho.

Sintaxe

NET_API_STATUS NET_API_FUNCTION NetWkstaGetInfo(
  [in]  LMSTR  servername,
  [in]  DWORD  level,
  [out] LPBYTE *bufptr
);

Parâmetros

[in] servername

Ponteiro para uma cadeia de caracteres que especifica o nome DNS ou NetBIOS do servidor remoto no qual a função deve ser executada. Se esse parâmetro for NULL, o computador local será usado.

[in] level

Especifica o nível de informações dos dados. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
100
Retornar informações sobre o ambiente de estação de trabalho, incluindo informações específicas da plataforma, o nome do domínio e o computador local e informações sobre o sistema operacional. O parâmetro bufptr aponta para uma estrutura WKSTA_INFO_100 .
101
Além das informações de nível 100, retorne o caminho para o diretório LANMAN. O parâmetro bufptr aponta para uma estrutura WKSTA_INFO_101 .
102
Além das informações de nível 101, retorne o número de usuários que estão conectados ao computador local. O parâmetro bufptr aponta para uma estrutura WKSTA_INFO_102 .

[out] bufptr

Ponteiro para o buffer que recebe os dados. O formato desses dados depende do valor do parâmetro level . Esse buffer é alocado pelo sistema e deve ser liberado usando a função NetApiBufferFree . Para obter mais informações, consulte Buffers de função de gerenciamento de rede e Comprimentos de buffer de função de gerenciamento de rede.

Valor retornado

Se a função for bem-sucedida, o valor retornado será NERR_Success.

Se a função falhar, o valor retornado poderá ser um dos códigos de erro a seguir.

Código de retorno Descrição
ERROR_ACCESS_DENIED
O usuário não tem acesso às informações solicitadas.
ERROR_INVALID_LEVEL
O parâmetro de nível é inválido.

Comentários

Windows Server 2003 e Windows XP: Se você chamar essa função em um controlador de domínio que esteja executando o Active Directory, o acesso será permitido ou negado com base na ACL do objeto protegível. Para habilitar o acesso anônimo, o usuário Anônimo deve ser membro do grupo "Acesso compatível com o Pré-Windows 2000". Isso ocorre porque os tokens anônimos não incluem o SID do grupo Todos por padrão. Se você chamar essa função em um servidor membro ou estação de trabalho, todos os usuários autenticados poderão exibir as informações. O acesso anônimo também será permitido se a configuração de política EveryoneIncludesAnonymous permitir acesso anônimo. O acesso anônimo é sempre permitido para o nível 100. Se você chamar essa função no nível 101, os usuários autenticados poderão exibir as informações. Os membros dos administradores e os grupos locais Servidor, Sistema e Operador de Impressão podem exibir informações nos níveis 102 e 502. Para obter mais informações sobre como restringir o acesso anônimo, consulte Requisitos de segurança para as funções de gerenciamento de rede. Para obter mais informações sobre ACLs, ACEs e tokens de acesso, consulte Controle de Acesso Model.

Windows 2000: Se você chamar essa função em um controlador de domínio que está executando o Active Directory, o acesso será permitido ou negado com base na ACL (lista de controle de acesso) do objeto protegível. A ACL padrão permite que todos os usuários autenticados e membros do grupo " Acesso compatível com o Pré-Windows 2000" exibam as informações. Por padrão, o grupo "Acesso compatível com o Pré-Windows 2000" inclui Todos como membro. Isso habilitará o acesso anônimo às informações se o sistema permitir acesso anônimo. Se você chamar essa função em um servidor membro ou estação de trabalho, todos os usuários autenticados poderão exibir as informações. O acesso anônimo também será permitido se a configuração de política RestrictAnonymous permitir acesso anônimo.

Para compilar um aplicativo que usa essa função, defina a macro _WIN32_WINNT como 0x0400 ou posterior. Para obter mais informações, consulte Usando os cabeçalhos do Windows.

Exemplos

O exemplo de código a seguir demonstra como recuperar informações sobre os elementos de configuração de uma estação de trabalho usando uma chamada para a função NetWkstaGetInfo . O exemplo chama NetWkstaGetInfo, especificando o nível de informações 102 ( WKSTA_INFO_102). Se a chamada for bem-sucedida, o exemplo imprimirá informações sobre a estação de trabalho. Por fim, o exemplo de código libera a memória alocada para o buffer de informações.

#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;
}

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho lmwksta.h (inclua Lm.h)
Biblioteca Netapi32.lib
DLL Netapi32.dll

Confira também

NetWkstaSetInfo

Funções de gerenciamento de rede

Visão geral do gerenciamento de rede

WKSTA_INFO_100

WKSTA_INFO_101

WKSTA_INFO_102

Funções de usuário de estação de trabalho e estação de trabalho