Funzione NetWkstaGetInfo (lmwksta.h)

La funzione NetWkstaGetInfo restituisce informazioni sulla configurazione di una workstation.

Sintassi

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

Parametri

[in] servername

Puntatore a una stringa che specifica il nome DNS o NetBIOS del server remoto in cui eseguire la funzione. Se questo parametro è NULL, viene usato il computer locale.

[in] level

Specifica il livello di informazioni dei dati. Questo parametro può avere uno dei valori seguenti.

Valore Significato
100
Restituisce informazioni sull'ambiente della workstation, incluse informazioni specifiche della piattaforma, il nome del dominio e il computer locale e le informazioni relative al sistema operativo. Il parametro bufptr punta a una struttura WKSTA_INFO_100 .
101
Oltre a informazioni di livello 100, restituire il percorso della directory LANMAN. Il parametro bufptr punta a una struttura WKSTA_INFO_101 .
102
Oltre alle informazioni di livello 101, restituisce il numero di utenti connessi al computer locale. Il parametro bufptr punta a una struttura WKSTA_INFO_102 .

[out] bufptr

Puntatore al buffer che riceve i dati. Il formato di questi dati dipende dal valore del parametro di livello . Questo buffer viene allocato dal sistema e deve essere liberato usando la funzione NetApiBufferFree . Per altre informazioni, vedere Buffer delle funzioni di gestione della rete e lunghezze del buffer delle funzioni di gestione della rete.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è NERR_Success.

Se la funzione ha esito negativo, il valore restituito può essere uno dei codici di errore seguenti.

Codice restituito Descrizione
ERROR_ACCESS_DENIED
L'utente non ha accesso alle informazioni richieste.
ERROR_INVALID_LEVEL
Il parametro di livello non è valido.

Commenti

Windows Server 2003 e Windows XP: Se si chiama questa funzione in un controller di dominio che esegue Active Directory, l'accesso è consentito o negato in base all'elenco di controllo di accesso per l'oggetto a protezione diretta. Per abilitare l'accesso anonimo, l'utente Anonimo deve essere membro del gruppo di accesso compatibile con "Pre-Windows 2000". Questo perché i token anonimi non includono il SID del gruppo Tutti per impostazione predefinita. Se si chiama questa funzione in un server membro o in una workstation, tutti gli utenti autenticati possono visualizzare le informazioni. L'accesso anonimo è consentito anche se l'impostazione dei criteri EveryoneIncludesAnonymous consente l'accesso anonimo. L'accesso anonimo è sempre consentito per il livello 100. Se si chiama questa funzione a livello 101, gli utenti autenticati possono visualizzare le informazioni. I membri degli amministratori e i gruppi locali server, sistema e operatore di stampa possono visualizzare le informazioni a livelli 102 e 502. Per altre informazioni sulla limitazione dell'accesso anonimo, vedere Requisiti di sicurezza per le funzioni di gestione della rete. Per altre informazioni sugli elenchi di controllo di accesso, sugli ACL e sui token di accesso, vedere Controllo di accesso Modello.

Windows 2000: Se si chiama questa funzione in un controller di dominio che esegue Active Directory, l'accesso è consentito o negato in base all'elenco di controllo di accesso (ACL) per l'oggetto a protezione diretta. L'elenco di controllo di accesso predefinito consente a tutti gli utenti autenticati e ai membri del gruppo " Accesso compatibile con Windows 2000" di pre-Windows 2000 per visualizzare le informazioni. Per impostazione predefinita, il gruppo "Accesso compatibile con Windows 2000" include Tutti come membro. Ciò consente l'accesso anonimo alle informazioni se il sistema consente l'accesso anonimo. Se si chiama questa funzione in un server membro o in una workstation, tutti gli utenti autenticati possono visualizzare le informazioni. L'accesso anonimo è consentito anche se l'impostazione dei criteri RestrictAnonymous consente l'accesso anonimo.

Per compilare un'applicazione che usa questa funzione, definire la macro _WIN32_WINNT come 0x0400 o successiva. Per altre informazioni, vedere Uso delle intestazioni di Windows.

Esempio

L'esempio di codice seguente illustra come recuperare informazioni sugli elementi di configurazione per una workstation usando una chiamata alla funzione NetWkstaGetInfo . L'esempio chiama NetWkstaGetInfo, specificando il livello di informazioni 102 ( WKSTA_INFO_102). Se la chiamata ha esito positivo, l'esempio stampa le informazioni sulla workstation. Infine, l'esempio di codice libera la memoria allocata per il buffer delle informazioni.

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

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione lmwksta.h (include Lm.h)
Libreria Netapi32.lib
DLL Netapi32.dll

Vedi anche

NetWkstaSetInfo

Funzioni di gestione della rete

Panoramica sulla gestione della rete

WKSTA_INFO_100

WKSTA_INFO_101

WKSTA_INFO_102

Funzioni utente workstation e workstation