NetGroupEnum 関数 (lmaccess.h)

NetGroupEnum 関数は、セキュリティ データベース内の各グローバル グループ (セキュリティ アカウント マネージャー (SAM) データベース、またはドメイン コントローラーの場合は Active Directory) に関する情報を取得します。

NetQueryDisplayInformation 関数は、グローバル グループを列挙するための効率的なメカニズムを提供します。 可能であれば、NetGroupEnum 関数の代わりに NetQueryDisplayInformation を使用することをお勧めします。

構文

NET_API_STATUS NET_API_FUNCTION NetGroupEnum(
  [in]      LPCWSTR    servername,
  [in]      DWORD      level,
  [out]     LPBYTE     *bufptr,
  [in]      DWORD      prefmaxlen,
  [out]     LPDWORD    entriesread,
  [out]     LPDWORD    totalentries,
  [in, out] PDWORD_PTR resume_handle
);

パラメーター

[in] servername

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

[in] level

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

説明
0
グローバル グループ名を返します。 bufptr パラメーターは、GROUP_INFO_0構造体の配列を指します。
1
グローバル グループ名とコメントを返します。 bufptr パラメーターは、GROUP_INFO_1構造体の配列を指します。
2
グローバル グループに関する詳細情報を返します。 bufptr パラメーターは、GROUP_INFO_2構造体の配列を指します。 Windows XP 以降では、代わりに GROUP_INFO_3 を使用することをお勧めします。
3
グローバル グループに関する詳細情報を返します。 bufptr パラメーターは、GROUP_INFO_3構造体の配列を指します。

Windows 2000: このレベルはサポートされていません。

[out] bufptr

グローバル グループ情報構造体を受け取るバッファーへのポインター。 このデータの形式は、 level パラメーターの値によって異なります。

システムは、このバッファーのメモリを割り当てます。 メモリの割り当てを解除するには、 NetApiBufferFree 関数を呼び出す必要があります。 関数が ERROR_MORE_DATA で失敗した場合でも、バッファーを解放する必要があることに注意してください。

[in] prefmaxlen

返されるデータの推奨される最大長をバイト単位で指定します。 MAX_PREFERRED_LENGTHを指定すると、データを保持するために必要なメモリ量が関数によって割り当てられます。 このパラメーターに別の値を指定すると、関数から返されるバイト数を制限できます。 バッファー サイズが不十分で、すべてのエントリを保持できる場合、関数は ERROR_MORE_DATAを返します。 詳細については、「 ネットワーク管理機能バッファー 」および「 ネットワーク管理機能バッファーの長さ」を参照してください。

[out] entriesread

実際に列挙された要素の数を受け取る値へのポインター。

[out] totalentries

現在の再開位置から列挙された可能性があるエントリの合計数を受け取る値へのポインター。 エントリの合計数はヒントにすぎません。 エントリの正確な数の決定の詳細については、次の「解説」セクションを参照してください。

[in, out] resume_handle

グローバル グループ列挙を続行するために使用される再開ハンドルを含む変数へのポインター。 最初の呼び出しではハンドルを 0 にし、後続の呼び出しでは変更せずに残す必要があります。 このパラメーターが NULL の場合、再開ハンドルは格納されません。

戻り値

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

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

リターン コード 説明
ERROR_ACCESS_DENIED
ユーザーには、要求された情報へのアクセス権がありません。
NERR_InvalidComputer
コンピューター名が無効です。
ERROR_MORE_DATA
その他のエントリを使用できます。 すべてのエントリを受信するのに十分な大きさのバッファーを指定します。

解説

Active Directory のプログラミングを行っている場合は、特定の Active Directory サービス インターフェイス (ADSI) メソッドを呼び出して、ネットワーク管理グループ関数を呼び出すことで実現できるのと同じ機能を実現できる場合があります。 詳細については、「 IADsGroup」を参照してください。

Active Directory を実行しているドメイン コントローラーでこの関数を呼び出すと、 セキュリティ保護可能なオブジェクトのアクセス制御リスト (ACL) に基づいてアクセスが許可または拒否されます。 既定の ACL では、"Pre-Windows 2000 互換アクセス" グループのすべての認証済みユーザーとメンバーに情報の表示が許可されます。 メンバー サーバーまたはワークステーションでこの関数を呼び出すと、すべての認証済みユーザーが情報を表示できます。 これらのプラットフォームでの匿名アクセスと匿名アクセスの制限については、「 ネットワーク管理機能のセキュリティ要件」を参照してください。 ACL、ACE、およびアクセス トークンの詳細については、「存取控制 モデル」を参照してください。

関数は、呼び出し元が読み取りアクセス権を持つ情報のみを返します。 呼び出し元は、Domain オブジェクトへのリスト コンテンツ アクセス権と、システム コンテナーにある SAM サーバー オブジェクトに対する SAM ドメイン全体のアクセス権を列挙する必要があります。

グループの正確な合計数を確認するには、ツリー全体を列挙する必要があります。これはコストのかかる操作になる可能性があります。 ツリー全体を列挙するには、 resume_handle パラメーターを使用して連続する呼び出しの列挙を続行し、 entriesread パラメーターを使用してグループの合計数を累積します。 アプリケーションがドメイン コントローラーと通信している場合は、 ADSI LDAP プロバイダー を使用して、この種類のデータをより効率的に取得することを検討する必要があります。 ADSI LDAP プロバイダーは、さまざまな ADSI インターフェイスをサポートする ADSI オブジェクトのセットを実装します。 詳細については、「 ADSI サービス プロバイダー」を参照してください。

ユーザー アカウント名は 20 文字に制限され、グループ名は 256 文字に制限されます。 さらに、アカウント名をピリオドで終えることはできません。また、コンマまたは"、/、、[、]、:、|<>、+、=、;、?、*のいずれかの印刷可能な文字を含めることはできません。 名前には、印刷できない 1 から 31 の範囲の文字を含めることもできます。

要件

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

関連項目

GROUP_INFO_0

GROUP_INFO_1

GROUP_INFO_3

グループ関数

NetApiBufferFree

NetGroupGetInfo

NetGroupGetUsers

NetQueryDisplayInformation

ネットワーク管理機能

ネットワーク管理の概要