Board logo

标题: [问题求助] [已解决]vbs怎样修改本地账户属性 ,使其密码永不过期 [打印本页]

作者: gmwd18    时间: 2012-5-28 12:34     标题: [已解决]vbs怎样修改本地账户属性 ,使其密码永不过期

本帖最后由 gmwd18 于 2012-6-4 14:29 编辑

小弟在网上搜了一段代码,可以实现修改用户帐号的属性,设置其密码永不过期,但是这个代码有点问题,就是会将所有本地账户的属性都修改为密码永不过期,我对vbs不是很懂,处于刚入门阶段,麻烦各位高手帮忙看下,怎样可以只修改单个用户的账户属性,不胜感谢!
代码如下:
  1. Dim users
  2. Set users = GetObject("winmgmts:").Instancesof("Win32_useraccount")
  3. For Each user In users
  4. user.PasswordExpires = False  
  5. user.Put_()
  6. Next
复制代码

作者: broly    时间: 2012-5-28 12:57

  1. Dim users,response
  2. Set users = GetObject("winmgmts:").Instancesof("Win32_useraccount")
  3. For Each user In users
  4. response = MsgBox("是否对帐号:"&user.name&" 进行设置?",vbYesNo,"请选择")
  5. If response = vbyes Then
  6. user.PasswordExpires = False  
  7. user.Put_()
  8. End If
  9. Next
复制代码

作者: gawk    时间: 2012-5-28 13:37

  1. net user gmwd18 /expires:never
复制代码
批处理用户表示鸭梨不大
作者: gmwd18    时间: 2012-5-28 15:26

回复 3# gawk


   额,这个是 账户过期的,和密码不过期 不一样的~~
作者: gmwd18    时间: 2012-5-28 16:14

回复 2# broly


    谢谢,如果我只想为一个指定用户修改属性,该怎么写,如果用户多的话上面的脚本要点好多次~
作者: broly    时间: 2012-5-28 16:53

  1. Dim users
  2. Set users = GetObject("winmgmts:").Instancesof("Win32_useraccount")
  3. For Each user In users
  4. If strcomp(lcase(user.name),lcase("Administrator"))=0 Then
  5.         user.PasswordExpires = False  
  6.         user.Put_()
  7. End If
  8. Next
复制代码

作者: powerbat    时间: 2012-5-28 23:16

补充两个方法:
  1. '用下面的users代替你原来的users
  2. Set users = GetObject("winmgmts:").ExecQuery("select * from Win32_UserAccount where name='broly'")
复制代码
  1. UserDomain = CreateObject("WScript.Network").UserDomain
  2. set user = GetObject("winmgmts:Win32_UserAccount.domain='"&UserDomain&"',name='broly'")
  3. user.PasswordExpires = False  
  4. user.Put_()
复制代码

作者: gmwd18    时间: 2012-5-30 12:07

回复 7# powerbat

我 把这几个方法都验证了一下,发现都会报错,你的方法一在user.Put_()这行报错见图1
作者: gmwd18    时间: 2012-5-30 12:18

回复 7# powerbat

你的方法2在 user.PasswordExpires = False这行报错,见图2[attachimg]5350[/attachimg
broly的方法1和2在user.Put_()这行报错见图2
我想是不是user.Put_()这个方法不对呢,这条语句的作用是什么呢,求解答~
作者: powerbat    时间: 2012-5-30 13:12

1、语法错误你都能整出来?

2、更改帐户需要管理员权限,不用多说吧?
作者: powerbat    时间: 2012-5-30 13:17

用wmic更简单(管理员权限是前提):
  1. wmic path Win32_UserAccount.Name='broly' set PasswordExpires=false
复制代码

作者: gmwd18    时间: 2012-6-4 14:28

回复 10# powerbat


    谢谢,问题已解决,就是权限的问题,我使用的用户是在administrators组及远程桌面用户组里面,我换回administrator用户就可以执行了,wmic的方法确实很方便,看来这块得多多向你们学习,再次感谢!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2