• netapi32的一些利用方式


    添加用户并且把用户加到管理员组的cpp文件 调用了netapi32

    #ifndef UNICODE
    #define UNICODE
    #endif
    #pragma comment(lib, "netapi32.lib")
    
    #include <stdio.h>
    #include <windows.h> 
    #include <lm.h>
    
    int wmain(int argc, wchar_t* argv[])
    {
        USER_INFO_1 ui;
        DWORD dwLevel = 1;
        DWORD dwError = 0;
        NET_API_STATUS nStatus;
    
        if (argc != 3)
        {
            fwprintf(stderr, L"Usage: %s \\10.0.0.01 users
    ", argv[0]);
            exit(1);
        }
        //
        // Set up the USER_INFO_1 structure.
        //  USER_PRIV_USER: name identifies a user, 
        //    rather than an administrator or a guest.
        //  UF_SCRIPT: required 
        //
        ui.usri1_name = argv[2];
        ui.usri1_password = argv[2];
        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;
        //
        // Call the NetUserAdd function, specifying level 1.
        //
        nStatus = NetUserAdd(argv[1],
            dwLevel,
            (LPBYTE)&ui,
            &dwError);
        LOCALGROUP_MEMBERS_INFO_3 account;
        account.lgrmi3_domainandname = ui.usri1_name;
        NetLocalGroupAddMembers(NULL, L"Administrators", 3, (LPBYTE)&account, 1);
        //
        // If the call succeeds, inform the user.
        //
        if (nStatus == NERR_Success)
            fwprintf(stderr, L"Add success%s %s
    ",
                argv[2], argv[1]);
        //
        // Otherwise, print the system error.
        //
        else
            fprintf(stderr, "error : %d
    ", nStatus);
    
        return 0;
    }

    枚举用户以及当前group等等

    // WindowsAPIReuser.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
    //
    #ifndef UNICODE
    #define UNICODE
    #endif
    #pragma comment(lib, "netapi32.lib")
    
    #include <stdio.h>
    #include <string.h>
    #include <Windows.h>
    #include <Ntsecapi.h>
    #include <ntstatus.h>
    #include <LM.h>
    #include <winnt.h>
    #include <stdbool.h>
    
    static int get_all_local_users()
    {
    	NET_API_STATUS status;
    
    	USER_INFO_0* buffer = NULL;
    	DWORD preffered_max_len = MAX_PREFERRED_LENGTH;
    	DWORD entries_read = 0;
    	DWORD total_entries = 0;
    	DWORD resume_handle = 0;
    	status = NetUserEnum(L"\\127.0.0.1", 0, 0, (LPBYTE*)&buffer, preffered_max_len, &entries_read, &total_entries, &resume_handle);
    	if (status != NERR_Success) {
    		fwprintf(stderr, L"False");
    		return 1;
    	}
    	for (DWORD i = 0; i < entries_read; i++) {
    		WCHAR* user_name = buffer[i].usri0_name;
    
    		fwprintf(stderr, user_name);
    
    	}
    	NetApiBufferFree(buffer);
    	return 0;
    }
    int main()
    {
    	get_all_local_users();
    	return 0;
    }
    
  • 相关阅读:
    角点检测
    25岁董事长给大学生的18条忠告
    10大忠告
    实验常用正交表
    面试必备15题
    专家系统
    深圳租房完全攻略
    你应选什么样的职业?
    托福报名详细过程解说
    Managed Direct3D开发经验浅析
  • 原文地址:https://www.cnblogs.com/-zhong/p/14513761.html
Copyright © 2020-2023  润新知