win10创建一个新的管理员账户,win10创建新账户设置为管理员

首页 > 招聘 > 作者:YD1662023-05-14 22:29:49

最近有变态需求要求把企业无盘的用户帐号和Windows帐号一体化,就研究了下Windows帐号的创建,有几个坑,第一是Windows内置帐号是不能改名的,Windows自己能改名其实其内部机制也是先创建新的再删除老的,并且要关联注册表和用户文件, 第二是当创建新的管理员帐号时要先创建成普通用户,再加入到Administrators组里。话不多说,上示例代码(为了省事,代码是chatGPT生成的,只简单调试就OK了).

#include <windows.h> #include <lm.h> #include <lmaccess.h> #pragma comment(lib, "NETapi32.lib") BOOL RemoveUserAccount(LPCWSTR username) { NET_API_STATUS status = NetUserDel(nullptr, username); if (status == NERR_Success) { // Account removed successfully return TRUE; } else { // Error occurred while removing account return FALSE; } } bool DoesUserExist(const wchar_t* username) { USER_INFO_0* user_info = NULL; bool exists = false; NET_API_STATUS result = NetUserGetInfo(NULL, username, 0, (LPBYTE*)&user_info); if (result == NERR_Success) { exists = true; NetApiBufferFree(user_info); } return exists; } bool CreateAdminUser(const wchar_t* username, const wchar_t* password) { USER_INFO_1 user_info = {}; user_info.usri1_name = const_cast<wchar_t*>(username); user_info.usri1_password = const_cast<wchar_t*>(password); user_info.usri1_priv = USER_PRIV_USER; user_info.usri1_flags = UF_script | UF_DONT_EXPIRE_PASSWD | UF_PASSWD_CANT_CHANGE; user_info.usri1_home_dir = NULL; user_info.usri1_comment = NULL; user_info.usri1_script_path = NULL; NET_API_STATUS result = NetUserAdd(NULL, 1, (LPBYTE)&user_info, NULL); if (result == NERR_Success) { LOCALGROUP_MEMBERS_INFO_3 account_info{}; account_info.lgrmi3_domainandname = const_cast<LPWSTR>(username); result = NetLocalGroupAddMembers(NULL, L"Administrators", 3, (LPBYTE)&account_info, 1); if (result == NERR_Success) { } else { } } return true; } DWORD RenameUserAccount(LPWSTR oldUsername, const LPWSTR newUsername) { USER_INFO_0 userInfo; DWORD result; // Set the new username in the USER_INFO_1003 structure userInfo.usri0_name = newUsername; // Call NetUserSetInfo to rename the user account result = NetUserSetInfo(NULL, oldUsername, 0, (LPBYTE)&userInfo, NULL); if (result == NERR_Success) { // Success! return ERROR_SUCCESS; } else { // There was an error return result; } } int main() { if (!DoesUserExist(L"TestAdmin")) { CreateAdminUser(L"TestAdmin", L"123~@#7890"); } else { RemoveUserAccount(L"AdminTest"); RenameUserAccount((LPWSTR)L"TestAdmin", (LPWSTR)L"AdminTest"); //RemoveUserAccount(L"TestAdmin"); } // name successfully changed return 0; }

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.