啊。。。这个问题还没结帖?
pusofalse兄的代码当然可行。我来标上中文注释吧。
;===============================================================================
; 说明: 设置用户帐号参数
; 语法: _NetUserSetInfo($sUserName, $sNewData[, $iType = 1[, $sComputer = ""]])
; 参数: $sUserName - 用户名
; $sNewData - 新参数
; $iType - [可选] 参数类型。1 - 用户名, 2 - 密码, 3 - 全名, 4 - 描述, 5 - 配置文件, 6 - 登录脚本, 7 - 本地主文件夹
; $sComputer - [可选] 计算机名称
; 需要: 无
; 返回: 成功 - 1
; 失败 - 0, 并设置 @error 到
; 1 - $iType 无效
; 2 - API 操作失败, 设置 @extended 到返回值
; 备注: 出处: http://www.autoitx.com/forum.php?mod=viewthread&tid=6726 2#, 作者: pusofalse
;===============================================================================
Func _NetUserSetInfo($sUserName, $sNewData, $iType = 1, $sComputer = "")
Local $aResult, $iLevel, $tData, $pData, $tBuffer, $pBuffer
Switch $iType
Case 1
$iLevel = 0
Case 2
$iLevel = 1003
Case 3
$iLevel = 1011
Case 4
$iLevel = 1007
Case 5
$iLevel = 1052
Case 6
$iLevel = 1009
Case 7
$iLevel = 1006
Case Else
Return SetError(1, 0, 0)
EndSwitch
$tData = DllStructCreate("wchar[256]")
$pData = DllStructGetPtr($tData)
DllStructSetData($tData, 1, $sNewData)
$tBuffer = DllStructCreate("ptr")
$pBuffer = DllStructGetPtr($tBuffer)
DllStructSetData($tBuffer, 1, $pData)
$aResult = DllCall("netapi32.dll", "dword", "NetUserSetInfo", _
"wstr", $sComputer, "wstr", $sUserName, "dword", $iLevel, "ptr", $pBuffer, "int*", 0)
If $aResult[0] = 0 Then
Return 1
Else
Return SetError(2, $aResult[0], 0)
EndIf
EndFunc ;==>_NetUserSetInfo
|