使用NetUserAdd API函数创建远程用户
http://apps.hi.baidu.com/share/detail/33407620
使用NetUserAdd编程创建远程用户
Windows API NetUserAdd()可以创建Windows用户,无论是本地还是远程的用户。
NET_API_STATUS NetUserAdd(
LMSTR servername,
DWORD level,
LPBYTE buf,
LPDWORD parm_err
);
servername
[in] Pointer to a constant string that specifies the DNS or NetBIOS name of the remote server on which the function is to execute. If this parameter is NULL, the local computer is used.
尽管MSDN如是说,但是有一个问题:如果当前的登录用户在远程机器上没有管理员的权限,创建远程用户会失败。例如:当前用户是主机A上的用户Administrator,希望能够创建主机B上一个新用户testB,显然用户HostA\Administrator并不是主机B上的Administrators组的用户,所以创建会因安全问题失败。我们必须提供Windows主机B上的具有管理员权限的用户名和口令,如HostB\Administrator,但即使如此NetUserAdd()该怎样告诉Windows呢?
我想过Impersonate等函数,但比如ImpersonateLogonUser()并不能模拟远程用户。在国外的网站上也找不到类似的例子,正在一筹莫展之时,突然想到了试试先让主机A与主机B建立一个网络连接,即调用WNetAddConnection2()建立一个网络映射,然后再调用NetUserAdd(),结果居然成功了!
代码如下:
NETRESOURCE nr;
memset(&nr,0,sizeof(nr));
nr.dwType = RESOURCETYPE_DISK;
nr.lpLocalName = "X:";
nr.lpRemoteName = "\\\\sean01\\d$\\test";
DWORD dwRet = WNetAddConnection2(&nr,"password","sean01\\administrator",CONNECT_UPDATE_PROFILE);
USER_INFO_1 NewUser;
memset(&NewUser,0,sizeof(NewUser));
NewUser.usri1_name = L"UserTestOne"; // Allocates the username
NewUser.usri1_password = L"abcd1234"; // allocates the password
NewUser.usri1_priv = 1; // Sets the account type to USER_PRIV_USER
NewUser.usri1_home_dir = NULL; // We didn't supply a Home Directory
NewUser.usri1_comment = L"Create remote user"; // Comment on the User
NewUser.usri1_script_path = NULL; // We didn't supply a Logon Script Path
dwRet = NetUserAdd(L"\\\\sean01" ,1 ,(LPBYTE)&NewUser, 0);
if ( dwRet != 0 ) // If the call fails we get a non-zero value
{
MessageBox(NULL,"Error Adding User",NULL,NULL);
}
else
MessageBox(NULL,"CreateUser ok",NULL,NULL);
尽管不是最好的办法,但可以使用。希望哪天可以知道怎样用NetUserAdd()就可以搞定。
http://www.cnblogs.com/-clq/archive/2012/02/23/2364559.html
使用NetUserAdd API函数创建远程用户的更多相关文章
- 【API】API函数创建用户,添加到管理组
1 学习目标 使用API添加用户可以绕过某些杀毒软件的限制. 2 编程思路 2.1 代码原理 使用NetUserAdd这个API添加普通权限的用户,NetLocalGroupAddMembers这个A ...
- MySQL创建远程用户并授权
今天需要在本地测试系统功能,因为本地没有数据库,就需要在程序里面连接远程数据库: 先用ssh登录远程服务器,用root连上数据库看看情况: mysql> select Host,User,Pas ...
- mysql创建远程用户
grant all privileges on *.* to myuser@"%" identified by 'password'; 用root用户登陆,然后: grant al ...
- mysql 创建新用户、数据库、授权
创建用户 1.登录mysql mysql -uroot -p 2.创建本地用户(2.3选其一) #use mysql; //选择mysql数据库 #create user 'w ...
- MySQL学习(一)——创建新用户、数据库、授权
一.创建用户 1.登录mysql mysql -u root -p 2.创建本地用户>/font> use mysql; //选择mysql数据库 create user 'test'@' ...
- 实现:API实现创建用户并且添加至管理员
参考文章:https://www.cnblogs.com/17bdw/p/6790197.html#_label0 利用的API函数: 1.NetUserAdd 2.NetLocalGroupAddM ...
- 创建MySQL用户 赋予某指定库表的权限 flush privileges才能生效!!!!;@'localhost'授权本地,@'%'授权远程
update ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value 建议使用GRANT语句进行授权,语句如下: gra ...
- mysql创建远程登陆用户并授权
在创建安装微擎的过程中,针对第四步 创建远程登陆用户并授权 > grant all PRIVILEGES on database.* to root@'127.0.0.1' id ...
- 【Azure Developer】使用Microsoft Graph API 批量创建用户,先后遇见的三个错误及解决办法
问题描述 在先前的一篇博文中,介绍了如何使用Microsoft Graph API来创建Azure AD用户(博文参考:[Azure Developer]使用Microsoft Graph API 如 ...
随机推荐
- MySQL 的 read_buffer_size 参数是如何影响写缓冲和写性能的?
Each thread // that does a sequential scan . The value of this variable should be a multiple of 4KB. ...
- linux上传下载软件
如何实现windows和linux之间的文件传输 (原文地址:http://hi.baidu.com/ying5420/item/439dee93f0f7fd1a934f41e2) 如果想从windo ...
- VS2012减负:加快启动速度,减少编辑卡壳
我公司的笔记本配置如下: CPU:i5-3210M @ 2.50 GHz 2.50 GHz mem: 4.00 GB OS: 64bit Win7 用VS2012编译Cocos2d-X项目时非常的卡. ...
- discuz论坛几种安全策略(二)
大头看了我给的方案,http://www.cnblogs.com/itsmylife/p/4012000.html 今早给的回复如下: “ 补充几点,供参考: 第一条,配置一下允许上传文件的格式以及大 ...
- hadoop之wordCount程序理解
有篇文章http://www.cnblogs.com/xia520pi/archive/2012/05/16/2504205.html中介绍的
- PreferenceFragment界面透明问题
PreferenceFragment界面默认是透明的 而其布局代码框架为 <PreferenceScreen> ... </PreferenceScreen>,背景色及透明度属 ...
- C# - string 转为 DateTime(自定义)
上代码: string dt = " 1 11 1961"; DateTime day; System.Globalization.DateTimeFormatInfo dtFor ...
- Struts2默认拦截器配置
http://blog.csdn.net/axin66ok/article/details/7321430
- SGU 149. Computer Network
时间限制:0.25s 空间限制:4M: 题意: 给出一颗n(n<=10000)个节点的树,和n-1条边的长度.求出这棵树每个节点到最远节点的距离: Solution: 对于一个节点,我们可以用D ...
- POJ 1236.Network of Schools (强连通)
首先要强连通缩点,统计新的图的各点的出度和入度. 第一问直接输出入度为0的点的个数 第二问是要是新的图变成一个强连通图,那么每一个点至少要有一条出边和一条入边,输出出度和入度为0的点数大的那一个 注意 ...