NetServerGetInfo 函数 (lmserver.h)

NetServerGetInfo 函数检索指定服务器的当前配置信息。

语法

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

parameters

[in] servername

指向字符串的指针,该字符串指定要在其中执行函数的远程服务器的名称。 如果此参数为 NULL,则使用本地计算机。

[in] level

指定数据的信息级别。 此参数的取值可为下列值之一:

含义
100
返回服务器名称和平台信息。 bufptr 参数指向SERVER_INFO_100结构。
101
返回服务器名称、类型和关联的软件。 bufptr 参数指向SERVER_INFO_101结构。
102
返回服务器名称、类型、关联的软件和其他属性。 bufptr 参数指向SERVER_INFO_102结构。

[out] bufptr

指向接收数据的缓冲区的指针。 此数据的格式取决于 级别 参数的值。

此缓冲区由系统分配,必须使用 NetApiBufferFree 函数释放。

返回值

如果函数成功,则返回值NERR_Success。

如果函数失败,则返回值可能是以下错误代码之一。

返回代码 说明
ERROR_ACCESS_DENIED
5
用户无权访问请求的信息。
ERROR_INVALID_LEVEL
124
级别 参数指定的值无效。
ERROR_INVALID_PARAMETER
87
指定的参数无效。
ERROR_NOT_ENOUGH_MEMORY
8
可用内存不足。
NERR_ServerNotStarted
2114
服务器服务未启动。

注解

只有管理员或服务器操作员本地组,或者具有打印或服务器操作员组成员身份的管理员或服务器操作员组成员,才能在级别 102 成功执行 NetServerGetInfo 函数。 级别 100 或级别 101 调用不需要特殊的组成员身份。

如果要为 Active Directory 编程,则可以调用某些 Active Directory 服务接口 (ADSI) 方法,以实现通过调用网络管理服务器函数可实现的相同功能。 有关详细信息,请参阅 IADsComputer

示例

以下代码示例演示如何使用对 NetServerGetInfo 函数的调用检索服务器的当前配置信息。 此示例调用 NetServerGetInfo,指定信息级别 101 (SERVER_INFO_101) 。 如果调用成功,代码将尝试标识服务器的类型。 最后,该示例释放为信息缓冲区分配的内存。

#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 = 101;
   LPSERVER_INFO_101 pBuf = NULL;
   NET_API_STATUS nStatus;
   LPTSTR pszServerName = NULL;

   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 = (LPTSTR) argv[1];
   //
   // Call the NetServerGetInfo function, specifying level 101.
   //
   nStatus = NetServerGetInfo(pszServerName,
                              dwLevel,
                              (LPBYTE *)&pBuf);
   //
   // If the call succeeds,
   //
   if (nStatus == NERR_Success)
   {
      //
      // Check for the type of server.
      //
      if ((pBuf->sv101_type & SV_TYPE_DOMAIN_CTRL) ||
         (pBuf->sv101_type & SV_TYPE_DOMAIN_BAKCTRL) ||
         (pBuf->sv101_type & SV_TYPE_SERVER_NT))
         printf("This is a server\n");
      else
         printf("This is a workstation\n");
   }
   //
   // Otherwise, print 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
标头 lmserver.h (包括 Lm.h)
Library Netapi32.lib
DLL Netapi32.dll

另请参阅

NetRemoteComputerSupports

NetServerSetInfo

网络管理功能

网络管理概述

SERVER_INFO_100

SERVER_INFO_101

SERVER_INFO_102

服务器函数