mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 12:13:10 +00:00
[NET]
Display local group properties and members. svn path=/trunk/; revision=64983
This commit is contained in:
parent
a3930ce68f
commit
c1e082a84a
1 changed files with 93 additions and 0 deletions
|
@ -72,6 +72,93 @@ EnumerateLocalGroups(VOID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static
|
||||||
|
NET_API_STATUS
|
||||||
|
DisplayLocalGroup(LPWSTR lpGroupName)
|
||||||
|
{
|
||||||
|
PLOCALGROUP_INFO_1 pGroupInfo = NULL;
|
||||||
|
PLOCALGROUP_MEMBERS_INFO_3 pMembers = NULL;
|
||||||
|
PSERVER_INFO_100 pServer = NULL;
|
||||||
|
LPWSTR *pNames = NULL;
|
||||||
|
DWORD dwRead = 0;
|
||||||
|
DWORD dwTotal = 0;
|
||||||
|
DWORD_PTR ResumeHandle = 0;
|
||||||
|
DWORD i;
|
||||||
|
DWORD len;
|
||||||
|
NET_API_STATUS Status;
|
||||||
|
|
||||||
|
Status = NetLocalGroupGetInfo(NULL,
|
||||||
|
lpGroupName,
|
||||||
|
1,
|
||||||
|
(LPBYTE*)&pGroupInfo);
|
||||||
|
if (Status != NERR_Success)
|
||||||
|
return Status;
|
||||||
|
|
||||||
|
Status = NetLocalGroupGetMembers(NULL,
|
||||||
|
lpGroupName,
|
||||||
|
3,
|
||||||
|
(LPBYTE*)&pMembers,
|
||||||
|
MAX_PREFERRED_LENGTH,
|
||||||
|
&dwRead,
|
||||||
|
&dwTotal,
|
||||||
|
&ResumeHandle);
|
||||||
|
if (Status != NERR_Success)
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
Status = NetServerGetInfo(NULL,
|
||||||
|
100,
|
||||||
|
(LPBYTE*)&pServer);
|
||||||
|
if (Status != NERR_Success)
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
pNames = RtlAllocateHeap(RtlGetProcessHeap(),
|
||||||
|
HEAP_ZERO_MEMORY,
|
||||||
|
dwRead * sizeof(LPWSTR));
|
||||||
|
if (pNames == NULL)
|
||||||
|
{
|
||||||
|
Status = ERROR_OUTOFMEMORY;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
len = wcslen(pServer->sv100_name);
|
||||||
|
for (i = 0; i < dwRead; i++)
|
||||||
|
{
|
||||||
|
if (!wcsncmp(pMembers[i].lgrmi3_domainandname, pServer->sv100_name, len))
|
||||||
|
pNames[i] = &pMembers[i].lgrmi3_domainandname[len + 1];
|
||||||
|
else
|
||||||
|
pNames[i] = pMembers[i].lgrmi3_domainandname;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Alias name %S\n", pGroupInfo->lgrpi1_name);
|
||||||
|
printf("Comment %S\n", pGroupInfo->lgrpi1_comment);
|
||||||
|
printf("\n");
|
||||||
|
printf("Members\n");
|
||||||
|
printf("\n");
|
||||||
|
printf("------------------------------------------\n");
|
||||||
|
|
||||||
|
for (i = 0; i < dwRead; i++)
|
||||||
|
{
|
||||||
|
if (pNames[i])
|
||||||
|
printf("%S\n", pNames[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
|
if (pNames != NULL)
|
||||||
|
RtlFreeHeap(RtlGetProcessHeap(), 0, pNames);
|
||||||
|
|
||||||
|
if (pServer != NULL)
|
||||||
|
NetApiBufferFree(pServer);
|
||||||
|
|
||||||
|
if (pMembers != NULL)
|
||||||
|
NetApiBufferFree(pMembers);
|
||||||
|
|
||||||
|
if (pGroupInfo != NULL)
|
||||||
|
NetApiBufferFree(pGroupInfo);
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
INT
|
INT
|
||||||
cmdLocalGroup(
|
cmdLocalGroup(
|
||||||
INT argc,
|
INT argc,
|
||||||
|
@ -99,6 +186,12 @@ cmdLocalGroup(
|
||||||
printf("Status: %lu\n", Status);
|
printf("Status: %lu\n", Status);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
else if (argc == 3)
|
||||||
|
{
|
||||||
|
Status = DisplayLocalGroup(argv[2]);
|
||||||
|
printf("Status: %lu\n", Status);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
i = 2;
|
i = 2;
|
||||||
if (argv[i][0] != L'/')
|
if (argv[i][0] != L'/')
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue