实现:API实现创建用户并且添加至管理员

参考文章:https://www.cnblogs.com/17bdw/p/6790197.html#_label0

利用的API函数:
1、NetUserAdd
2、NetLocalGroupAddMembers


NetUserAdd

NET_API_STATUS NET_API_FUNCTION
NetUserAdd (
    IN  LPCWSTR     servername OPTIONAL,  //指定远程服务器的DNS或NetBIOS名称的函数来执行。如果该参数为NULL,使用本地计算机。
    IN  DWORD      level,
    IN  LPBYTE     buf,
    OUT LPDWORD    parm_err OPTIONAL
    );
NetLocalGroupAddMembers

NET_API_STATUS NET_API_FUNCTION
NetLocalGroupAddMembers (
    IN  LPCWSTR     servername OPTIONAL,
    IN  LPCWSTR     groupname,
    IN  DWORD      level,
    IN  LPBYTE     buf,
    IN  DWORD      totalentries
    );

实现过程:使用NetUserAdd这个API添加普通权限的用户,NetLocalGroupAddMembers这个API添加管理员权限。

示例代码:

// windows_api.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
  
#include "pch.h"
#include <iostream>
#include<stdio.h>  
#include<windows.h>  
#include<lm.h>  
#pragma comment(lib,"netapi32")
int wmain(int argc, wchar_t *argv[])
{
	// 定义USER_INFO_1结构体
	USER_INFO_1 ui;
	DWORD dwError = 0;
	//小笔记 LPWSTR 是 wchar_t *   , L"zzzhh" 类型是const wchar_t[6] 可以隐式转换为const whcar_t *
	wchar_t username[] = L"adexx$";
	ui.usri1_name = username;            // 账户   
	wchar_t password[] = L"adexx!@#QWE";
	ui.usri1_password = password;      // 密码
	ui.usri1_priv = USER_PRIV_USER;
	ui.usri1_home_dir = NULL;
	ui.usri1_comment = NULL;
	ui.usri1_flags = UF_SCRIPT;
	ui.usri1_script_path = NULL;
	//添加名为adexx的用户,密码为p@adexx!@#QWE
	if (NetUserAdd(NULL, 1, (LPBYTE)&ui, &dwError) == NERR_Success)
	{
		std::cout << "普通用户添加成功" << std::endl;
	}
	else
	{
		//添加失败
		std::cout << "普通用户添加失败" << std::endl;

	}

	// 添加用户到administrators组
	LOCALGROUP_MEMBERS_INFO_3 account;
	account.lgrmi3_domainandname = ui.usri1_name;
	if (NetLocalGroupAddMembers(NULL, L"Administrators", 3, (LPBYTE)&account, 1) == NERR_Success)
	{
		//添加成功    
		std::cout << "管理员用户添加成功" << std::endl;
	}
	else
	{
		//添加失败    
		std::cout << "管理员用户添加失败" << std::endl;
	}
	return 0;
}
原文地址:https://www.cnblogs.com/zpchcbd/p/11915654.html