zoukankan      html  css  js  c++  java
  • C++之NetLocalGroupGetMembers

    #include <stdio.h>
    #include <Windows.h>
    #include <lmaccess.h>
    
    #pragma comment(lib, "Netapi32.lib")
    	//wmain是main函数的宽字符版本  在Unicode编码下使用
    int wmain(int argc, wchar_t* argv[]) {//argc是输入参数的个数,argv存储了所有命令行的参数
    	if (argc != 3) {			//如果这里的参数个数不是三个,则触发如下
    		wprintf(L"Usage: + localgroupname \\servername
    ");
    		wprintf(L"Eg:    + administrators \\192.168.232.128
    ");
    		exit(1);    //程序的退出,同break
    	}
    	//argv[0]==exe程序 //argv[1]==组名  //argv[2]==目标ip
    	LPCWSTR servername = argv[2];				// 已经建立ipc连接的IP
    	LPCWSTR TargetGroup = argv[1];				// 本地组名
    	LOCALGROUP_MEMBERS_INFO_2* buff;			// LOCALGROUP_MEMBERS_INFO_2结构获得返回与本地组成员关联的SID、帐户信息和域名,变量buff存放获取到的信息
    	DWORD dwPrefmaxlen = MAX_PREFERRED_LENGTH;	// 指定返回数据的首选最大长度,以字节为单位。如果指定MAX_PREFERRED_LENGTH,该函数将分配数据所需的内存量。
    	DWORD dwEntriesread;						// 指向一个值的指针,该值接收实际枚举的元素数。
    	DWORD dwTotalentries;						//指向一个值的值,该值接收可能已从当前简历位置枚举的条目总数
    	NetLocalGroupGetMembers(servername, TargetGroup, 2, (LPBYTE*)&buff, dwPrefmaxlen, &dwEntriesread, &dwTotalentries, NULL);
    	//上边的2就是函数里的等级
    	for (DWORD i = 0; i < dwEntriesread; i++) {  // i < dwEntriesread 小于收到的指针的元素数量
    		//lgrmi2_domainandname是LOCALGROUP_MEMBERS_INFO_2的结构,回显DomainNameAccountName
    		wprintf(L"%s
    ", buff[i].lgrmi2_domainandname);
    	}
    }
    

    参考
    https://docs.microsoft.com/en-us/windows/win32/api/lmaccess/ns-lmaccess-localgroup_members_info_2
    https://docs.microsoft.com/en-us/windows/win32/api/lmaccess/nf-lmaccess-netlocalgroupgetmembers
    https://github.com/SkewwG/domainTools
    
    联系邮箱:yang_s1r@163.com 博客园地址:https://www.cnblogs.com/Yang34/
  • 相关阅读:
    Spring boot 启动图片
    Spring Cloud 从入门到入门
    理解错误的 Arrays.asList()
    git github 对代码的管理
    【POJ 2154】Color
    CodeForces
    CodeForces
    CodeForces
    CodeForces
    [数据结构]Hash Table(哈希表)
  • 原文地址:https://www.cnblogs.com/Yang34/p/14393719.html
Copyright © 2011-2022 走看看