zoukankan      html  css  js  c++  java
  • 实现: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;
    }
    
  • 相关阅读:
    DI的3种实现方式
    spring ioc的实现方式
    异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.
    maven项目 集成SSM框架
    org.xml.sax.SAXParseException错误
    Redis在web中的应用
    上传下载文件实例(vsftp服务器+nginx)
    Redis的安装与启动
    修饰器-2
    修饰器练习
  • 原文地址:https://www.cnblogs.com/zpchcbd/p/11915654.html
Copyright © 2011-2022 走看看