cxckx 发表于 2009-9-28 21:56:33

[已解决]如何改win用户名称和用户全名

本帖最后由 cxckx 于 2009-10-20 23:15 编辑

如何把win用户名称例如test改为ks,用户全名例如“测试”改成“考试”(用户全名是在win登录界面显示的用户名称),或者请pusofalse 大哥有空给LocalSecurityAuthority.au3加上这样一个可以改用户名和全名的函数,这样功能更全一些。:face (22):

pusofalse 发表于 2009-10-15 22:54:17

本帖最后由 pusofalse 于 2009-10-15 22:57 编辑

#include <LocalSecurityAuthority.au3>

_LsaLocalUserSetInfo("Test", 0, "ks", "wstr*") ; 改用户名
_LsaLocalUserSetInfo("测试", 1011, "考试", "wstr*") ; 改全名其实早就添加了这样一个函数,专门设置本地或远程用户信息的。只不过没有单独地写一个更改用户名和全名的函数。_LsaLocalUserSetInfo其实是调用了Netapi32.dll中的NetUserSetInfo API函数,这个API很强大,设置用户的各种信息最终都会调用到这个API,net.exe或者其他设置用户信息的外部工具也是。其中就包含了设置用户名或全名,此外,还可以设置密码、国家代码、到期时间、用户配置文件等。想要灵活地设置用户各种信息,需要对NetUserSetInfo有足够的了解,因为它提供了太多的选项用于标记到底设置用户的何种信息,这也是它的强大之处。

sxd 发表于 2009-10-16 17:09:30

LocalSecurityAuthority.au3 汉化版里没有哦

pusofalse 发表于 2009-10-16 23:50:22

Re 3#:
可以在这里下载到:http://www.autoitx.com/forum.php?mod=viewthread&tid=7080&extra=page%3D1&page=9
这个库的作者的英语水平就不怎样,所以写出来的英语也是汉语式的。如果诸位需要,我跟作者说下,让他汉化一下~

cxckx 发表于 2009-10-18 19:49:23

谢谢pusofalse 指点!

cxckx 发表于 2009-10-18 20:08:34

本帖最后由 cxckx 于 2009-10-20 22:13 编辑

改全名试了不管用,是什么地方不对啊?
_LsaLocalUserSetInfo("测试", 1011, "考试", "wstr*")

pusofalse 发表于 2009-10-18 22:06:19

Re 6#:
不可能不行吧,你的操作系统?测试环境?

cxckx 发表于 2009-10-19 23:21:55

本帖最后由 cxckx 于 2009-10-19 23:31 编辑

我的操作系统是xp sp2, autoit 3.311第一汉化版和autoit 3.210汉化版,在两台机都试了,还是改不了全名,只能改用户名,我又把全名中的汉字“测试”换成"test1"、“考试”换成“ks1”也还是不能改全名,但是手动是可以改全名的。

pusofalse 发表于 2009-10-19 23:53:15

Re 8#:
真是奇怪。你把_LsaLocalUserSetInfo("测试", 1011, "考试", "wstr*")这句改成如下:
$fResult = _LsaLocalUserSetInfo("测试", 1011, "考试", "wstr*")
Msgbox(0, $fResult, "Error code: " & @error)
看下错误代码是多少?

cxckx 发表于 2009-10-20 22:06:26

本帖最后由 cxckx 于 2009-10-20 22:12 编辑

我刚试了,错误代码是2221,是不是没有找到匹配的用户全名啊?

pusofalse 发表于 2009-10-20 22:53:12

Re 10#:
原来如此,我明白了。2221对应错误“找不到指定用户”。
上例代码中的“测试”是用户名,不是用户全名。将“测试”改为用户名就可以了。
_LsaLocalUserSetInfo只能根据“用户名”设置用户信息。
“用户全名”不是唯一的,不同的两个用户也可以有同样的全名,这种情况下,你指定“全名”,到底是要设置哪个用户的信息呢?而“用户名”却是唯一的。

cxckx 发表于 2009-10-20 23:14:33

哦,那应该改成修改后的用户名ks,然后再替换全名,这样试过成功了,多谢pusofalse 大哥!
_LsaLocalUserSetInfo("ks", 1011, "考试", "wstr*")

xlcwxl 发表于 2009-12-8 16:36:08

学习了
强大的库

steven_deng 发表于 2012-4-18 22:00:32

谢谢 学习了 pusofalse 超级牛{:face (361):}
页: [1]
查看完整版本: [已解决]如何改win用户名称和用户全名