///////////////////////////////////////////////////////////////////////////////////////////////////////////////
//本功能可以列出本电脑上的所有的用户,相当于net user的功能,但还有其他的一些信息。
//可以修改其他的参数以便获得更多的信息。
#include <windows.h>
#include <locale.h>
#include <lm.h>
#pragma comment(lib,"Netapi32.lib")
int wmain(int argc, wchar_t *argv[])
{
LPUSER_INFO_1 pBuf = NULL;
DWORD dwEntriesRead = 0;
DWORD dwTotalEntries = 0;
DWORD dwResumeHandle = 0;
setlocale(LC_CTYPE, ".936");
NetUserEnum(0, 1, FILTER_NORMAL_ACCOUNT, (LPBYTE*)&pBuf, -1, &dwEntriesRead, &dwTotalEntries, &dwResumeHandle);
for (int i = 0; i < dwEntriesRead; i++)
{
wprintf(L"%s:%s\n", pBuf->usri1_name,pBuf->usri1_comment);
pBuf++;
}
return 0;
}
//made at 2011.12.07
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//本程序的功能是显示本计算机上的所有的组,及其内的成员的一些信息。
//本程序可以实现net localgroup的功能。
#include <windows.h>
#include <lm.h>
#pragma comment (lib, "Netapi32.lib")
int main( int argc, char *argv[ ] )
{
DWORD read, total, resume = 0;
LPVOID buff;
NetLocalGroupEnum(0, 1, (unsigned char **)&buff, -1, &read, &total, &resume);
PLOCALGROUP_INFO_1 info = (PLOCALGROUP_INFO_1) buff;
for (int i=0; i<read; i++)
{
printf("GROUP: %S\n",info[i].lgrpi1_name);
char comment[255];
WideCharToMultiByte(CP_ACP, 0, info[i].lgrpi1_comment , -1, comment,255,0,0);
printf("COMMENT: %s\n",comment);
//进一步获取组内各个用户的信息。
DWORD read, total, resume = 0;//覆盖上面的变量。这样做不好,局部变量里面会有两个同名的变量。
NetLocalGroupGetMembers(0, info[i].lgrpi1_name, 2, (unsigned char **)&buff, 1024, &read, &total, &resume);
PLOCALGROUP_MEMBERS_INFO_2 info = (PLOCALGROUP_MEMBERS_INFO_2) buff;
for (unsigned i=0; i<read; i++)
{
printf("\t域\\名:%S\n", info[i].lgrmi2_domainandname);
printf("\tSID:%d\n", info[i].lgrmi2_sid);
if (info[i].lgrmi2_sidusage == SidTypeUser)
{
printf("\tSIDUSAGE:The account is a user account\n");
}
else if (info[i].lgrmi2_sidusage == SidTypeGroup)
{
printf("\tSIDUSAGE:The account is a global group account\n");
}
else if (info[i].lgrmi2_sidusage == SidTypeWellKnownGroup)
{
printf("\tSIDUSAGE:The account is a well-known group account (such as Everyone). \n");
}
else if (info[i].lgrmi2_sidusage == SidTypeDeletedAccount)
{
printf("\tSIDUSAGE:The account has been deleted\n");
}
else if (info[i].lgrmi2_sidusage == SidTypeDomain)
{
printf("\tSIDUSAGE:SidTypeDomain\n");
}
else if (info[i].lgrmi2_sidusage == SidTypeAlias)
{
printf("\tSIDUSAGE:SidTypeAlias\n");
}
else if (info[i].lgrmi2_sidusage == SidTypeInvalid)
{
printf("\tSIDUSAGE:SidTypeInvalid\n");
}
else if (info[i].lgrmi2_sidusage == SidTypeComputer)
{
printf("\tSIDUSAGE:SidTypeComputer\n");
}
else if (info[i].lgrmi2_sidusage == SidTypeLabel)
{
printf("\tSIDUSAGE:SidTypeLabel\n");
}
else
{
printf("\tSIDUSAGE:未知\n");
}
printf("\n");
}
NetApiBufferFree (buff);
printf("////////////////////////////////////////////////////////////////////////////\n");
}
return 0;
}
//made at 2011.12.07
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//本功能可以列出本电脑上的所有的共享资源,相当于net share的功能,当然还有其他的一些信息没有列举出来。
#include <windows.h>
#include <lm.h>
#pragma comment(lib,"Netapi32.lib")
void wmain( int argc, TCHAR *lpszArgv[ ])
{
PSHARE_INFO_502 p,p1;
DWORD er=0,tr=0,resume=0;
printf("共享名: 资源: 注释 \n");
printf("---------------------------------------------------------------------\n");
NetShareEnum (L".", 502, (LPBYTE *) &p, -1, &er, &tr, &resume);
p1 = p;
for(int i=1;i<=er;i++)
{
char comment[255];
WideCharToMultiByte(0, 0, p->shi502_remark, -1, comment,255,0,0);
printf("%-20S%-30S%s\n",p->shi502_netname, p->shi502_path, comment);
p++;
}
NetApiBufferFree(p1);
printf("命令成功完成。\n\n");
return;
}
//made at 2011.12.08
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//本功能可以列出已经登录到本电脑上的所有的用户。第一个好像不是,是啥具体不太清楚。
#include <windows.h>
#include <lm.h>
#pragma comment(lib,"Netapi32.lib")
int wmain(int argc, wchar_t *argv[])
{
LPWKSTA_USER_INFO_0 pBuf, pTmpBuf;
DWORD dwEntriesRead = 0;
DWORD dwTotalEntries = 0;
DWORD dwResumeHandle = 0;
NetWkstaUserEnum(L".", 0, (LPBYTE*)&pBuf, -1, &dwEntriesRead, &dwTotalEntries, &dwResumeHandle);
pTmpBuf = pBuf;
for (int i = 0; (i < dwEntriesRead); i++)
{
wprintf(L"%s\n", pTmpBuf->wkui0_username);
pTmpBuf++;
}
NetApiBufferFree(pBuf);
return 0;
}
//made at 2011.12.08
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//NetServerEnum 就不写了,可以使用 WNetEnumResource。
//NetSessionEnum 枚举就不写了,相当于 net session。
//NetServerDiskEnum也不写了。
//NetScheduleJobEnum与此类似,更多的就不写了。
没有评论:
发表评论