NetWkstaGetInfo, fonction (lmwksta.h)

La fonction NetWkstaGetInfo retourne des informations sur la configuration d’une station de travail.

Syntaxe

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

Paramètres

[in] servername

Pointeur vers une chaîne qui spécifie le nom DNS ou NetBIOS du serveur distant sur lequel la fonction doit s’exécuter. Si ce paramètre a la valeur NULL, l’ordinateur local est utilisé.

[in] level

Spécifie le niveau d’informations des données. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
100
Retourne des informations sur l’environnement de station de travail, notamment des informations spécifiques à la plateforme, le nom du domaine et de l’ordinateur local, ainsi que des informations relatives au système d’exploitation. Le paramètre bufptr pointe vers une structure WKSTA_INFO_100 .
101
En plus des informations de niveau 100, retournez le chemin d’accès au répertoire LANMAN. Le paramètre bufptr pointe vers une structure WKSTA_INFO_101 .
102
En plus des informations de niveau 101, retournez le nombre d’utilisateurs connectés à l’ordinateur local. Le paramètre bufptr pointe vers une structure WKSTA_INFO_102 .

[out] bufptr

Pointeur vers la mémoire tampon qui reçoit les données. Le format de ces données dépend de la valeur du paramètre level . Cette mémoire tampon est allouée par le système et doit être libérée à l’aide de la fonction NetApiBufferFree . Pour plus d’informations, consultez Mémoires tampons de fonction de gestionréseau et Longueurs de mémoire tampon des fonctions de gestion réseau.

Valeur retournée

Si la fonction réussit, la valeur de retour est NERR_Success.

Si la fonction échoue, la valeur de retour peut être l’un des codes d’erreur suivants.

Code de retour Description
ERROR_ACCESS_DENIED
L’utilisateur n’a pas accès aux informations demandées.
ERROR_INVALID_LEVEL
Le paramètre level n’est pas valide.

Notes

Windows Server 2003 et Windows XP : Si vous appelez cette fonction sur un contrôleur de domaine qui exécute Active Directory, l’accès est autorisé ou refusé en fonction de la liste de contrôle d’accès pour l’objet sécurisable. Pour activer l’accès anonyme, l’utilisateur Anonyme doit être membre du groupe « Accès compatible pré-Windows 2000 ». Cela est dû au fait que les jetons anonymes n’incluent pas le SID de groupe Tout le monde par défaut. Si vous appelez cette fonction sur un serveur ou une station de travail membre, tous les utilisateurs authentifiés peuvent afficher les informations. L’accès anonyme est également autorisé si le paramètre de stratégie EveryoneIncludesAnonymous autorise l’accès anonyme. L’accès anonyme est toujours autorisé pour le niveau 100. Si vous appelez cette fonction au niveau 101, les utilisateurs authentifiés peuvent afficher les informations. Les membres des administrateurs et les groupes locaux Serveur, Système et Opérateur d’impression peuvent afficher des informations aux niveaux 102 et 502. Pour plus d’informations sur la restriction de l’accès anonyme, consultez Exigences de sécurité pour les fonctions de gestion réseau. Pour plus d’informations sur les ACL, les ACL et les jetons d’accès, consultez modèle Access Control.

Windows 2000 : Si vous appelez cette fonction sur un contrôleur de domaine qui exécute Active Directory, l’accès est autorisé ou refusé en fonction de la liste de contrôle d’accès (ACL) pour l’objet sécurisable. La liste de contrôle d’accès par défaut permet à tous les utilisateurs et membres authentifiés du groupe « Accès compatible pré-Windows 2000 » d’afficher les informations. Par défaut, le groupe « Accès compatible pré-Windows 2000 » inclut Tout le monde en tant que membre. Cela permet l’accès anonyme aux informations si le système autorise l’accès anonyme. Si vous appelez cette fonction sur un serveur ou une station de travail membre, tous les utilisateurs authentifiés peuvent afficher les informations. L’accès anonyme est également autorisé si le paramètre de stratégie RestrictAnonymous autorise l’accès anonyme.

Pour compiler une application qui utilise cette fonction, définissez la macro _WIN32_WINNT comme 0x0400 ou version ultérieure. Pour plus d’informations, consultez Utilisation des en-têtes Windows.

Exemples

L’exemple de code suivant montre comment récupérer des informations sur les éléments de configuration d’une station de travail à l’aide d’un appel à la fonction NetWkstaGetInfo . L’exemple appelle NetWkstaGetInfo, en spécifiant le niveau d’informations 102 ( WKSTA_INFO_102). Si l’appel réussit, l’exemple imprime des informations sur la station de travail. Enfin, l’exemple de code libère la mémoire allouée pour la mémoire tampon d’informations.

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

Spécifications

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête lmwksta.h (include Lm.h)
Bibliothèque Netapi32.lib
DLL Netapi32.dll

Voir aussi

NetWkstaSetInfo

Fonctions de gestion réseau

Vue d’ensemble de la gestion du réseau

WKSTA_INFO_100

WKSTA_INFO_101

WKSTA_INFO_102

Fonctions utilisateur de station de travail et de station de travail