NetGroupEnum 函数 (lmaccess.h)

NetGroupEnum 函数检索有关安全数据库中每个全局组的信息,安全数据库是安全帐户管理器 (SAM) 数据库,如果是域控制器,则为 Active Directory。

NetQueryDisplayInformation 函数提供了一种用于枚举全局组的有效机制。 如果可能,建议使用 NetQueryDisplayInformation 而不是 NetGroupEnum 函数。

语法

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
);

parameters

[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

指向用于接收全局组信息结构的缓冲区的指针。 此数据的格式取决于 级别 参数的值。

系统为此缓冲区分配内存。 必须调用 NetApiBufferFree 函数才能解除分配内存。 请注意,即使函数失败并出现ERROR_MORE_DATA,也必须释放缓冲区。

[in] prefmaxlen

指定返回数据的首选最大长度(以字节为单位)。 如果指定MAX_PREFERRED_LENGTH,函数将分配保存数据所需的内存量。 如果在此参数中指定另一个值,它可以限制函数返回的字节数。 如果缓冲区大小不足以容纳所有条目,则函数将返回ERROR_MORE_DATA。 有关详细信息,请参阅 网络管理功能缓冲区网络管理功能缓冲区长度

[out] entriesread

指向接收实际枚举的元素计数的值的指针。

[out] totalentries

指向一个值的指针,该值接收可能从当前恢复位置枚举的条目总数。 总条目数只是一个提示。 有关确定确切条目数的详细信息,请参阅以下“备注”部分。

[in, out] resume_handle

指向变量的指针,该变量包含用于继续全局组枚举的恢复句柄。 第一次调用时,句柄应为零,后续调用应保持不变。 如果此参数为 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 对象的 List Contents 访问权限,并且对位于系统容器中的 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 (包括 Lm.h)
Library Netapi32.lib
DLL Netapi32.dll

另请参阅

GROUP_INFO_0

GROUP_INFO_1

GROUP_INFO_3

组函数

NetApiBufferFree

NetGroupGetInfo

NetGroupGetUsers

NetQueryDisplayInformation

网络管理功能

网络管理概述