【已解决】关于修改用户密码的报错信息
本帖最后由 anythinging 于 2019-12-31 08:42 编辑各位大神,我用下面代码修改用户密码,遇到个问题。
Local $sDCName = "." ;
Local $oUser = ObjGet("WinNT://" & $sDCName & "/" & $UserName & ",User");
$oUser.SetPassword($Password)
在本机测试正常,但换了个电脑就有错误提示:
"C:\Program Files (x86)\AutoIt3\SciTE\=????????-???5.0-obj?????-???.au3" (741) : ==> ????? "Object".????.:
$oUser.SetPassword($Password)
$oUser^ ??
如果编译成exe文件,在自已的电脑上也能正常运行,但换了电脑提示:
AutoIt Error
Line 16757(File "C:\Users\administrator\Desktop\test.exe"):
Error: Variable must be of type "Object".
感觉像是这句的问题,$oUser.SetPassword($Password),求指点,谢谢!
由于有不可控的因素,目前已不用此方法了。感谢各位的指点,学到了不少东西,谢谢各位 ...
If NotIsObj($oUser) Then Exit MsgBox(48, '', '获取对象出错')
$oUser.SetPassword($Password)
... #AutoIt3Wrapper_UseX64 = n 试过吗 229989799 发表于 2019-12-29 13:19
#AutoIt3Wrapper_UseX64 = n 试过吗
感谢回复,有效果,我又同时编译了32和64位2个exe,32不报错,64的报错。
但有个问题搞不懂,在64位系统下运行不是应该编译成64位吗?不知道是什么原因 #AutoIt3Wrapper_UseX64 = n或编译成32位exe也不行,虽然不报错了,但是程序 未正常运行。 $sDCName 应该是 @ComputerName $username="administrator"
$Password ="123456"
$oUser = ObjGet("WinNT://" & @ComputerName & "/" & $UserName & ",User");
$oUser.SetPassword($Password) skysmile 发表于 2019-12-29 17:06
感谢回复,您这个代码是没问题的,我在虚拟机上测试也没问题,但就是在目标计算机上出现开头所描述的错误提示。f5运行脚本时,能显示 第一个msgbox信息,不会显示 第二个msgbox信息,应该是在执行$oUser.SetPassword($Password)时出现问题。
我想:$oUser.SetPassword($Password)是否还有其它的写法
$username="administrator"
$Password ="123456"
$oUser = ObjGet("WinNT://" & @ComputerName & "/" & $UserName & ",User")
MsgBox(262144,'','1')
$oUser.SetPassword($Password)
MsgBox(262144,'','2')
本帖最后由 afan 于 2019-12-29 20:13 编辑
不是 SetPassword 的写法问题,提示是对象没成功获取,所以是 ObjGet 的问题要避免程序出错,应加上 If IsObj()... 再 Set
afan 发表于 2019-12-29 20:11
不是 SetPassword 的写法问题,提示是对象没成功获取,所以是 ObjGet 的问题要避免程序出错,应加上 If IsO ...
您说的非常有道理,请教下如果使用if 判断objget?
$oUser的值用msgbox好象无法显示 本帖最后由 anythinging 于 2019-12-29 20:47 编辑
If $oUser <> '' then $oUser.SetPassword($Password)
不知这样对不?不知如何显示 $oUser的值
afan 发表于 2019-12-29 20:47
...
If NotIsObj($oUser) Then Exit MsgBox(48, '', '获取对象出错')
$oUser.SetPassword($Password)
感谢指点!确实用了您的这句可以明显的看出确实是获取对象出错了,想问下$oUser正常是什么值,或者说如何查看它? anythinging 发表于 2019-12-29 20:59
感谢指点!确实用了您的这句可以明显的看出确实是获取对象出错了,想问下$oUser正常是什么值,或者说如何 ...
用 IsObj($oUser) 就行了,正常就 IsObj($oUser) = 1 其实问题还是没解决的,为什么会产生对象没成功获取 修改密码有很多方式,比如命令行
net user[用户名] [密码]
页:
[1]
2