网站首页  词典首页

请输入您要查询的函数:

 

术语 netusergetgroups
释义 NetUserGetGroups
语法:
C++
NET_API_STATUS NetUserGetGroups(
__in LPCWSTR servername,
__in LPCWSTR username,
__in DWORD level,
__out LPBYTE *bufptr,
__in DWORD prefmaxlen,
__out LPDWORD entriesread,
__out LPDWORD totalentries
);
NetUserGetGroups功能
该NetUserGetGroups函数检索一个指定哪些用户属于全局组列表。
参数
服务器名 [in]
一个常量字符串,它指定的DNS或NetBIOS的远程服务器上的功能是执行名称的指针。如果该参数为NULL,则使用本地计算机。
用户名 [in]
一个字符串常量,指定的用户名来搜索指针在每个组帐户。有关详细信息,请参阅下面的备注部分。
Level [in]
数据的信息化Level的要求。此参数可以是下列值之一。
ValueMeaning
0Return的名称给用户所属的全局组。在bufptr参数指向一个GROUP_USERS_INFO_0结构的数组。
1Return的名称的,以该用户的属性所属的全局组。在bufptr参数指向一个GROUP_USERS_INFO_1结构的数组。
bufptr [out]
一个缓冲区,接收数据的指针。此缓冲区分配制度,必须使用NetApiBufferFree释放功能。请注意,您必须释放缓冲区,即使函数ERROR_MORE_DATA失败。
prefmaxlen [in]
首选的最大长度,以字节为单位,返回的数据。如果MAX_PREFERRED_LENGTH指定,函数分配用于数据所需的内存量。如果其他值在这个参数指定,它可以限制的字节数函数返回。如果缓冲区大小不足以容纳所有作品,该函数返回ERROR_MORE_DATA。有关更多信息,请参阅网络管理功能,缓冲器和网络管理功能缓冲区长度。
entriesread [out]
一个值,接收元素计数实际检索指针。
totalentries [out]
一个值,接收的作品总数可能已被检索的指针。
返回值
如果函数成功,返回值是NERR_Success。
如果函数失败,返回值可以是下面的错误代码之一。
返回codeDescription
ERROR_ACCESS_DENIEDThe用户不具有访问权限所要求的资料。
ERROR_BAD_NETPATHThe网络路径未找到。返回此错误,如果服务器名参数找不到。
ERROR_INVALID_LEVELThe系统调用级别不正确。此错误,则返回参数的Level,如果是作为一个价值1比0或其他指定。
ERROR_INVALID_NAMEThe名称语法是不正确的。返回此错误,如果服务器名参数具有前导或尾随空格或包含非法字符。
ERROR_MORE_DATAMore项可用。指定一个足够大的缓冲区接收的所有条目。
ERROR_NOT_ENOUGH_MEMORYInsufficient记忆来完成操作。
NERR_InternalErrorAn发生内部错误。
NERR_UserNotFoundThe用户无法找到。则返回此错误,如果用户无法找到。
备注
如果您是Active Directory的程序,您可以调用某些Active Directory服务接口(ADSI)的方法来达到同样的功能,您可以通过调用用户的网络管理功能。有关更多信息,请参阅IADsUser和IADsComputer。
如果您调用域控制器上运行Active Directory的这一功能,允许访问或拒绝的访问控制列表的安全对象(ACL)的基础。默认的ACL允许所有经过身份验证的用户和“前成员Windows2000兼容访问”组查看信息。如果您调用一个成员服务器或工作站,所有的身份验证的用户可以查看此功能的信息。有关匿名访问的信息,并限制在这些平台上匿名访问,看到了网络管理功能的安全要求。欲了解更多有关的ACL,ACE的,和访问令牌信息,请访问控制模型。
该用户对象的安全描述符用于执行此函数访问检查。
来检索本地组的列表用户所属,您可以调用NetUserGetLocalGroups功能。网络团体是独立的,从Windows NT系统组明显。
用户帐户名称被限制为20个字符和组名称被限制为256个字符。此外,帐户名称不能终止的期间,他们不能包含逗号或以下打印字符:“,/,\\,[,]:,|,”,“+,=,,,?, *.名称也不能包括在1-31范围内,这些非打印字符。
实例
下面的代码示例演示如何以检索到的用户,以所属的NetUserGetGroups调用全局组列表功能。该范例调用NetUserGetGroups,指定信息化Level0(GROUP_USERS_INFO_0)。通过项目的代码循环并打印的全局组中的用户成员的名字。该示例还打印的项可用和项数实际列举如果它们不匹配的总数。最后,代码示例为缓冲区释放分配的内存。
#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "netapi32.lib")
#include
#include
#include
#include
int wmain(int argc, wchar_t *argv[])
{
LPGROUP_USERS_INFO_0 pBuf = NULL;
DWORD dwLevel = 0;
DWORD dwPrefMaxLen = MAX_PREFERRED_LENGTH;
DWORD dwEntriesRead = 0;
DWORD dwTotalEntries = 0;
NET_API_STATUS nStatus;
if (argc != 3)
{
fwprintf(stderr, L"Usage: %s \\\\\\\\ServerName UserName\\n", argv[0]);
exit(1);
}
//
// Call the NetUserGetGroups function, specifying level 0.
//
nStatus = NetUserGetGroups(argv[1],
argv[2],
dwLevel,
(LPBYTE*)&pBuf,
dwPrefMaxLen,
&dwEntriesRead,
&dwTotalEntries);
//
// If the call succeeds,
//
if (nStatus == NERR_Success)
{
LPGROUP_USERS_INFO_0 pTmpBuf;
DWORD i;
DWORD dwTotalCount = 0;
if ((pTmpBuf = pBuf) != NULL)
{
fprintf(stderr, "\\nGlobal group(s):\\n");
//
// Loop through the entries;
// print the name of the global groups
// to which the user belongs.
//
for (i = 0; i < dwEntriesRead; i++)
{
assert(pTmpBuf != NULL);
if (pTmpBuf == NULL)
{
fprintf(stderr, "An access violation has occurred\\n");
break;
}
wprintf(L"\\t-- %s\\n", pTmpBuf->grui0_name);
pTmpBuf++;
dwTotalCount++;
}
}
//
// If all available entries were
// not enumerated, print the number actually
// enumerated and the total number available.
//
if (dwEntriesRead < dwTotalEntries)
fprintf(stderr, "\\nTotal entries: %d", dwTotalEntries);
//
// Otherwise, just print the total.
//
printf("\\nEntries enumerated: %d\\n", dwTotalCount);
}
else
fprintf(stderr, "A system error has occurred: %d\\n", nStatus);
//
// Free the allocated buffer.
//
if (pBuf != NULL)
NetApiBufferFree(pBuf);
return 0;
}
要求:
最低支持:client-Windows 2000专业版
最低支持server-Windows 2000服务器
HeaderLmaccess.h(包括Lm.h)
LibraryNetapi32.lib
DLLNetapi32.dll
参见
网络管理概述
网络管理功能
用户功能
GROUP_USERS_INFO_0
GROUP_USERS_INFO_1
NetUserGetInfo
NetGroupGetUsers
NetUserGetLocalGroups
NetQueryDisplayInformation
如果有任何问题和意见,请发送给微软(wsddocfb@microsoft.com)
生成日期:2009年8月13日
==英文原文==NetUserGetGroups Function
The NetUserGetGroups function retrieves a list of global groups to which a specified user belongs.
Syntax
C++
NET_API_STATUS NetUserGetGroups(
__in LPCWSTR servername,
__in LPCWSTR username,
__in DWORD level,
__out LPBYTE *bufptr,
__in DWORD prefmaxlen,
__out LPDWORD entriesread,
__out LPDWORD totalentries
);
Parameters
servername [in]
A pointer to a constant string that specifies the DNS or NetBIOS name of the remote server on which the function is to execute. If this parameter is NULL, the local computer is used.
username [in]
A pointer to a constant string that specifies the name of the user to search for in each group account. For more information, see the following Remarks section.
level [in]
The information level of the data requested. This parameter can be one of the following values.
ValueMeaning
0Return the names of the global groups to which the user belongs. The bufptr parameter points to an array of GROUP_USERS_INFO_0 structures.
1Return the names of the global groups to which the user belongs with attributes. The bufptr parameter points to an array of GROUP_USERS_INFO_1 structures.

bufptr [out]
A pointer to the buffer that receives the data. This buffer is allocated by the system and must be freed using the NetApiBufferFree function. Note that you must free the buffer even if the function fails with ERROR_MORE_DATA.
prefmaxlen [in]
The preferred maximum length, in bytes, of returned data. If MAX_PREFERRED_LENGTH is specified, the function allocates the amount of memory required for the data. If another value is specified in this parameter, it can restrict the number of bytes that the function returns. If the buffer size is insufficient to hold all entries, the function returns ERROR_MORE_DATA. For more information, see Network Management Function Buffers and Network Management Function Buffer Lengths .
entriesread [out]
A pointer to a value that receives the count of elements actually retrieved.
totalentries [out]
A pointer to a value that receives the total number of entries that could have been retrieved.
Return Value
If the function succeeds, the return value is NERR_Success.
If the function fails, the return value can be one of the following error codes.
Return codeDescription
ERROR_ACCESS_DENIEDThe user does not have access rights to the requested information.
ERROR_BAD_NETPATHThe network path was not found. This error is returned if the servername parameter could not be found.
ERROR_INVALID_LEVELThe system call level is not correct. This error is returned if the level parameter was specified as a value other than 0 or 1.
ERROR_INVALID_NAMEThe name syntax is incorrect. This error is returned if the servername parameter has leading or trailing blanks or contains an illegal character.
ERROR_MORE_DATAMore entries are available. Specify a large enough buffer to receive all entries.
ERROR_NOT_ENOUGH_MEMORYInsufficient memory was available to complete the operation.
NERR_InternalErrorAn internal error occurred.
NERR_UserNotFoundThe user could not be found. This error is returned if the username could not be found.

Remarks
If you are programming for Active Directory, you may be able to call certain Active Directory Service Interface (ADSI) methods to achieve the same functionality you can achieve by calling the network management user functions. For more information, see IADsUser and IADsComputer .
If you call this function on a domain controller that is running Active Directory, access is allowed or denied based on the access control list (ACL) for the securable object . The default ACL permits all authenticated users and members of the " Pre-Windows2000 compatible access " group to view the information. If you call this function on a member server or workstation, all authenticated users can view the information. For information about anonymous access and restricting anonymous access on these platforms, see Security Requirements for the Network Management Functions . For more information on ACLs, ACEs, and access tokens, see Access Control Model .
The security descriptor of the User object is used to perform the access check for this function.
To retrieve a list of the local groups to which a user belongs, you can call the NetUserGetLocalGroups function. Network groups are separate and distinct from Windows NT system groups.
User account names are limited to 20 characters and group names are limited to 256 characters. In addition, account names cannot be terminated by a period and they cannot include commas or any of the following printable characters: ", /, \\, [, ], :, |, <, >, +, =, ;, ?, *. Names also cannot include characters in the range 1-31, which are nonprintable.
Examples
The following code sample demonstrates how to retrieve a list of global groups to which a user belongs with a call to the NetUserGetGroups function. The sample calls NetUserGetGroups, specifying information level 0 ( GROUP_USERS_INFO_0 ). The code loops through the entries and prints the name of the global groups in which the user has membership. The sample also prints the total number of entries that are available and the number of entries actually enumerated if they do not match. Finally, the code sample frees the memory allocated for the buffer.
#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "netapi32.lib")
#include
#include
#include
#include
int wmain(int argc, wchar_t *argv[])
{
LPGROUP_USERS_INFO_0 pBuf = NULL;
DWORD dwLevel = 0;
DWORD dwPrefMaxLen = MAX_PREFERRED_LENGTH;
DWORD dwEntriesRead = 0;
DWORD dwTotalEntries = 0;
NET_API_STATUS nStatus;
if (argc != 3)
{
fwprintf(stderr, L"Usage: %s \\\\\\\\ServerName UserName\\n", argv[0]);
exit(1);
}
//
// Call the NetUserGetGroups function, specifying level 0.
//
nStatus = NetUserGetGroups(argv[1],
argv[2],
dwLevel,
(LPBYTE*)&pBuf,
dwPrefMaxLen,
&dwEntriesRead,
&dwTotalEntries);
//
// If the call succeeds,
//
if (nStatus == NERR_Success)
{
LPGROUP_USERS_INFO_0 pTmpBuf;
DWORD i;
DWORD dwTotalCount = 0;
if ((pTmpBuf = pBuf) != NULL)
{
fprintf(stderr, "\\nGlobal group(s):\\n");
//
// Loop through the entries;
// print the name of the global groups
// to which the user belongs.
//
for (i = 0; i < dwEntriesRead; i++)
{
assert(pTmpBuf != NULL);
if (pTmpBuf == NULL)
{
fprintf(stderr, "An access violation has occurred\\n");
break;
}
wprintf(L"\\t-- %s\\n", pTmpBuf->grui0_name);
pTmpBuf++;
dwTotalCount++;
}
}
//
// If all available entries were
// not enumerated, print the number actually
// enumerated and the total number available.
//
if (dwEntriesRead < dwTotalEntries)
fprintf(stderr, "\\nTotal entries: %d", dwTotalEntries);
//
// Otherwise, just print the total.
//
printf("\\nEntries enumerated: %d\\n", dwTotalCount);
}
else
fprintf(stderr, "A system error has occurred: %d\\n", nStatus);
//
// Free the allocated buffer.
//
if (pBuf != NULL)
NetApiBufferFree(pBuf);
return 0;
}
Requirements
Minimum supported clientWindows 2000 Professional
Minimum supported serverWindows 2000 Server
HeaderLmaccess.h (include Lm.h)
LibraryNetapi32.lib
DLLNetapi32.dll
See Also
Network Management Overview
Network Management Functions
User Functions
GROUP_USERS_INFO_0
GROUP_USERS_INFO_1
NetUserGetInfo
NetGroupGetUsers
NetUserGetLocalGroups
NetQueryDisplayInformation
Send comments about this topic to Microsoft
Build date: 8/13/2009
==原始网址==http://msdn.microsoft.com/en-us/library/aa370653(VS.85).aspx\n
随便看

 

windows api函数参考手册包含2258条windows api函数文档,详细介绍nodejs、java、rust调用windows api的方法技巧,是学习windows api编程的入门中文文档。

 

Copyright © 2004-2023 Winrtm.com All Rights Reserved
京ICP备2021023879号-40 更新时间:2024/10/6 13:17:47