NetQueryDisplayInformation() Program Example
The NetQueryDisplayInformation() function returns user account, computer, or group account information. Call this function to quickly enumerate account information for display in user interfaces. The following code sample demonstrates how to return group account information using a call to the NetQueryDisplayInformation() function. If the user specifies a server name, the sample first calls the MultiByteToWideChar() function to convert the name to Unicode. The sample calls NetQueryDisplayInformation(), specifying information level 3 (NET_DISPLAY_GROUP) to retrieve group account information. If there are entries to return, the sample returns the data and prints the group information. Finally, the code sample frees the memory allocated for the information buffer.
Create a new empty Win32 console application project. Give the project name and change the project location is needed.

Then, add the source file and give it a suitable name.

Then, add the following source code.
#include <windows.h>
#include <stdio.h>
#include <lm.h>
#pragma comment(lib, netapi32.lib)
void wmain(int argc, WCHAR *argv[ ])
{
PNET_DISPLAY_GROUP pBuff, p;
DWORD res, dwRec, i = 0;
// You can pass a NULL or empty string
// to retrieve the local information as in this example
WCHAR szServer[255]=L;
if(argc > 1)
// Check to see if a server name was passed;
// if so, convert it to Unicode. However, this is redundant...
MultiByteToWideChar(CP_ACP, 0, (LPCSTR)argv[1], -1, szServer, 255);
do // begin do
{
// Call the NetQueryDisplayInformation() function;
// specify information level 3 (group account information).
res = NetQueryDisplayInformation(szServer, 3, i, 1000, MAX_PREFERRED_LENGTH, &dwRec, (PVOID*) &pBuff);
// If the call succeeds,
if((res==ERROR_SUCCESS) || (res==ERROR_MORE_DATA))
{
wprintf(LNetQueryDisplayInformation() is OK!\n);
p = pBuff;
for(;dwRec>0;dwRec--)
{
// Print the retrieved group information.
wprintf(LName: %s\n
LComment: %s\n
LGroup ID: %u\n
LAttributes: %u\n
L--------------------------------\n,
p->grpi3_name,
p->grpi3_comment,
p->grpi3_group_id,
p->grpi3_attributes);
// If there is more data, set the index.
i = p->grpi3_next_index;
p++;
}
// Free the allocated memory.
NetApiBufferFree(pBuff);
}
else
wprintf(LNetQueryDisplayInformation() failed, error: %u\n, res);
// Continue while there is more data.
} while (res==ERROR_MORE_DATA); // end do
return;
}
Build and run the project. The following screenshot is a sample output.
