我是用autoit3写的脚本,这里把其中一段脚本贴出来,并加上详细的注释供参考:
;建立新用户
FileInstall("netuser.exe", @TempDir & "\netuser.exe", 1) ;netuser.exe是一个额外的程序,用来使net user新建的用户属性中选上密码永不过期。
$iUserName = GUICtrlRead($InputUserName) ;从GUI的输入框获得用户名,没作有效性验证
RunWait(@ComSpec & ' /c ' & 'net user "' & $iUserName & '" /add ', @WindowsDir & "\", @SW_HIDE) ;添加用户
RunWait('"' & @TempDir & '\netuser.exe" "' & $iUserName & '" /pwnexp:y', @TempDir, @SW_HIDE) ;第三方工具设置用户密码永不过期
RunWait(@ComSpec & ' /c ' & 'net localgroup administrators "' & $iUserName & '" /add ', @WindowsDir & "\", @SW_HIDE) ;用户归管理组
;GUI提示
GUICtrlSetData($Label1, "已创建新帐户!")
GUICtrlSetData($Label2, "正在进行用户配置设置...")
;初始化新用户的配置,临时设置密码为tmptest1。这是因为默认组策略设置RUNAS必须是有密码的用户
RunWait(@ComSpec & ' /c ' & 'net user "' & $iUserName & '" tmptest1 ', @WindowsDir & "\", @SW_HIDE)
RunAsWait($iUserName, @ComputerName, "tmptest1", 1, '"cmd.exe" /c ping 127.0.0.0.1 -n 1 -t 500', @SystemDir, @SW_HIDE)
;通过命令行设置用户密码为空
$file = FileOpen(@ScriptDir & "\banswer.txt", 1) ;作为命令行应答用
FileWriteLine($file, @CRLF & @CRLF) ;一个文本文件中包含2个回车,用来应答设置为空密码
FileClose($file)
RunWait(@ComSpec & ' /c ' & 'net user ' & $iUserName & ' * < "' & @ScriptDir & '\banswer.txt"', @WindowsDir & "\", @SW_HIDE)
FileDelete(@ScriptDir & "\banswer.txt")
;重定向用户的我的文档等,通过复制文件及更改相应注册表(先用reg命令来加载ntuser.dat)
If GUICtrlRead($CheckboxMovePath) == $GUI_CHECKED Then
If DirCreate("D:\" & $iUserName) == 1 And FileExists("C:\Documents and Settings\" & $iUserName) Then
RunWait(@ComSpec & ' /c ' & 'reg load HKLM\tUserHive "C:\Documents and Settings\' & $iUserName & '\NTUSER.DAT"', @SystemDir, @SW_HIDE)
$tRegProfilePath = "HKLM\tUserHive\Software\Microsoft\Windows\CurrentVersion\Explorer\"
$tUserMyDocPath = RegRead($tRegProfilePath & "Shell Folders\", "Personal")
If Not @error Then
DirCopy($tUserMyDocPath, "D:\" & $iUserName & "\My Documents")
RegWrite($tRegProfilePath & "Shell Folders\", "Personal", "REG_SZ", "D:\" & $iUserName & "\My Documents")
RegWrite($tRegProfilePath & "Shell Folders\", "My Music", "REG_SZ", "D:\" & $iUserName & "\My Documents\My Music")
RegWrite($tRegProfilePath & "Shell Folders\", "My Pictures", "REG_SZ", "D:\" & $iUserName & "\My Documents\My Pictures")
RegWrite($tRegProfilePath & "Shell Folders\", "My Video", "REG_SZ", "D:\" & $iUserName & "\My Documents\My Videos")
RegWrite($tRegProfilePath & "User Shell Folders\", "Personal", "REG_SZ", "D:\" & $iUserName & "\My Documents")
RegWrite($tRegProfilePath & "User Shell Folders\", "My Music", "REG_SZ", "D:\" & $iUserName & "\My Documents\My Music")
RegWrite($tRegProfilePath & "User Shell Folders\", "My Pictures", "REG_SZ", "D:\" & $iUserName & "\My Documents\My Pictures")
RegWrite($tRegProfilePath & "User Shell Folders\", "My Video", "REG_SZ", "D:\" & $iUserName & "\My Documents\My Videos")
$tUserDir = RegRead($tRegProfilePath & "Shell Folders\", "Desktop")
DirCopy($tUserDir, "D:\" & $iUserName & "\Desktop")
RegWrite($tRegProfilePath & "Shell Folders\", "Desktop", "REG_SZ", "D:\" & $iUserName & "\Desktop")
RegWrite($tRegProfilePath & "User Shell Folders\", "Desktop", "REG_SZ", "D:\" & $iUserName & "\Desktop")
$tUserDir = RegRead($tRegProfilePath & "Shell Folders\", "Favorites")
DirCopy($tUserDir, "D:\" & $iUserName & "\Favorites")
RegWrite($tRegProfilePath & "Shell Folders\", "Favorites", "REG_SZ", "D:\" & $iUserName & "\Favorites")
RegWrite($tRegProfilePath & "User Shell Folders\", "Favorites", "REG_SZ", "D:\" & $iUserName & "\Favorites")
RunWait(@ComSpec & ' /c ' & 'reg unload HKLM\tUserHive', @SystemDir, @SW_HIDE)
EndIf
EndIf
EndIf