NetWkstaGetInfo 関数 (lmwksta.h)

NetWkstaGetInfo 関数は、ワークステーションの構成に関する情報を返します。

構文

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

パラメーター

[in] servername

関数を実行するリモート サーバーの DNS または NetBIOS 名を指定する文字列へのポインター。 このパラメーターが NULL の場合は、ローカル コンピューターが使用されます。

[in] level

データの情報レベルを指定します。 このパラメーターには、次の値のいずれかを指定できます。

説明
100
プラットフォーム固有の情報、ドメインとローカル コンピューターの名前、オペレーティング システムに関する情報など、ワークステーション環境に関する情報を返します。 bufptr パラメーターは、WKSTA_INFO_100構造体を指します。
101
レベル 100 の情報に加えて、LANMAN ディレクトリへのパスを返します。 bufptr パラメーターは、WKSTA_INFO_101構造体を指します。
102
レベル 101 の情報に加えて、ローカル コンピューターにログオンしているユーザーの数を返します。 bufptr パラメーターは、WKSTA_INFO_102構造体を指します。

[out] bufptr

データを受信するバッファーへのポインター。 このデータの形式は、 level パラメーターの値によって異なります。 このバッファーはシステムによって割り当てられ、 NetApiBufferFree 関数を使用して解放する必要があります。 詳細については、「 ネットワーク管理機能バッファー 」および「 ネットワーク管理機能バッファーの長さ」を参照してください。

戻り値

関数が成功した場合、戻り値はNERR_Success。

関数が失敗した場合、戻り値には次のいずれかのエラー コードを指定できます。

リターン コード 説明
ERROR_ACCESS_DENIED
ユーザーには、要求された情報へのアクセス権がありません。
ERROR_INVALID_LEVEL
level パラメーターが無効です。

解説

Windows Server 2003 および Windows XP: Active Directory を実行しているドメイン コントローラーでこの関数を呼び出すと、セキュリティ保護可能なオブジェクトの ACL に基づいてアクセスが許可または拒否されます。 匿名アクセスを有効にするには、ユーザー Anonymous が "Pre-Windows 2000 互換アクセス" グループのメンバーである必要があります。 これは、匿名トークンには既定で Everyone グループ SID が含まれていないためです。 メンバー サーバーまたはワークステーションでこの関数を呼び出すと、すべての認証済みユーザーが情報を表示できます。 EveryoneIncludesAnonymous ポリシー設定で匿名アクセスが許可されている場合は、匿名アクセスも許可されます。 レベル 100 では、常に匿名アクセスが許可されます。 この関数をレベル 101 で呼び出すと、認証されたユーザーは情報を表示できます。 管理者、サーバー、システム、および印刷オペレーターのローカル グループのメンバーは、レベル 102 と 502 で情報を表示できます。 匿名アクセスの制限の詳細については、「 ネットワーク管理機能のセキュリティ要件」を参照してください。 ACL、ACE、およびアクセス トークンの詳細については、「存取控制 モデル」を参照してください。

Windows 2000: Active Directory を実行しているドメイン コントローラーでこの関数を呼び出すと、セキュリティ保護可能なオブジェクトのアクセス制御リスト (ACL) に基づいてアクセスが許可または拒否されます。 既定の ACL では、" Pre-Windows 2000 互換アクセス" グループのすべての認証済みユーザーとメンバーに情報の表示が許可されます。 既定では、"Windows 2000 より前の互換性のあるアクセス" グループには、メンバーとして Everyone が含まれます。 これにより、システムで匿名アクセスが許可されている場合に、情報への匿名アクセスが可能になります。 メンバー サーバーまたはワークステーションでこの関数を呼び出すと、すべての認証済みユーザーが情報を表示できます。 RestrictAnonymous ポリシー設定で匿名アクセスが許可されている場合は、匿名アクセスも許可されます。

この関数を使用するアプリケーションをコンパイルするには、_WIN32_WINNT マクロを 0x0400 以降として定義します。 詳細については、「 Windows ヘッダーの使用」を参照してください。

次のコード サンプルは、 NetWkstaGetInfo 関数の呼び出しを使用して、ワークステーションの構成要素に関する情報を取得する方法を示しています。 このサンプルでは、情報レベル 102 ( WKSTA_INFO_102) を指定して NetWkstaGetInfo を呼び出します。 呼び出しが成功した場合、サンプルはワークステーションに関する情報を出力します。 最後に、コード サンプルでは、情報バッファーに割り当てられたメモリを解放します。

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

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー lmwksta.h (include Lm.h)
Library Netapi32.lib
[DLL] Netapi32.dll

関連項目

NetWkstaSetInfo

ネットワーク管理機能

ネットワーク管理の概要

WKSTA_INFO_100

WKSTA_INFO_101

WKSTA_INFO_102

ワークステーションおよびワークステーションのユーザー機能