Share via


NetServerGetInfo 函式 (lmserver.h)

NetServerGetInfo函式會擷取指定伺服器的目前組態資訊。

語法

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

參數

[in] servername

字串的指標,指定要執行函式的遠端伺服器名稱。 如果此參數為 Null,則會使用本機電腦。

[in] level

指定資料的資訊層級。 此參數可以是下列其中一個值。

意義
100
傳回伺服器名稱和平臺資訊。 bufptr參數指向SERVER_INFO_100結構。
101
傳回伺服器名稱、類型和相關聯的軟體。 bufptr參數指向SERVER_INFO_101結構。
102
傳回伺服器名稱、類型、相關聯的軟體和其他屬性。 bufptr參數指向SERVER_INFO_102結構。

[out] bufptr

接收資料的緩衝區指標。 此資料的格式取決於 level 參數的值。

此緩衝區是由系統所配置,而且必須使用 NetApiBufferFree 函式釋放。

傳回值

如果函式成功,傳回值會NERR_Success。

如果函式失敗,傳回值可以是下列其中一個錯誤碼。

傳回碼 描述
ERROR_ACCESS_DENIED
5
使用者無法存取要求的資訊。
ERROR_INVALID_LEVEL
124
level 參數指定的值無效。
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 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 lmserver.h (包括 Lm.h)
程式庫 Netapi32.lib
Dll Netapi32.dll

另請參閱

NetRemoteComputerSupports

NetServerSetInfo

網路管理功能

網路管理概觀

SERVER_INFO_100

SERVER_INFO_101

SERVER_INFO_102

伺服器函式