找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28338|回复: 11

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

[复制链接]
发表于 2012-5-28 12:34:30 | 显示全部楼层 |阅读模式
本帖最后由 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
复制代码

评分

参与人数 1PB +2 收起 理由
zqz0012005 + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2012-5-28 12:57:02 | 显示全部楼层
  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
复制代码
发表于 2012-5-28 13:37:47 | 显示全部楼层
  1. net user gmwd18 /expires:never
复制代码
批处理用户表示鸭梨不大
 楼主| 发表于 2012-5-28 15:26:11 | 显示全部楼层
回复 3# gawk


   额,这个是 账户过期的,和密码不过期 不一样的~~
 楼主| 发表于 2012-5-28 16:14:47 | 显示全部楼层
回复 2# broly


    谢谢,如果我只想为一个指定用户修改属性,该怎么写,如果用户多的话上面的脚本要点好多次~
发表于 2012-5-28 16:53:00 | 显示全部楼层
  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
复制代码

评分

参与人数 1技术 +1 收起 理由
zqz0012005 + 1 乐于助人

查看全部评分

发表于 2012-5-28 23:16:00 | 显示全部楼层
补充两个方法:

  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_()
复制代码

评分

参与人数 1技术 +1 收起 理由
zqz0012005 + 1 乐于助人

查看全部评分

 楼主| 发表于 2012-5-30 12:07:24 | 显示全部楼层
回复 7# powerbat

我 把这几个方法都验证了一下,发现都会报错,你的方法一在user.Put_()这行报错见图1
 楼主| 发表于 2012-5-30 12:18:44 | 显示全部楼层
回复 7# powerbat

你的方法2在 user.PasswordExpires = False这行报错,见图2[attachimg]5350[/attachimg
broly的方法1和2在user.Put_()这行报错见图2
我想是不是user.Put_()这个方法不对呢,这条语句的作用是什么呢,求解答~
发表于 2012-5-30 13:12:27 | 显示全部楼层
1、语法错误你都能整出来?

2、更改帐户需要管理员权限,不用多说吧?
发表于 2012-5-30 13:17:11 | 显示全部楼层
用wmic更简单(管理员权限是前提):
  1. wmic path Win32_UserAccount.Name='broly' set PasswordExpires=false
复制代码

评分

参与人数 1技术 +1 收起 理由
zqz0012005 + 1 乐于助人

查看全部评分

 楼主| 发表于 2012-6-4 14:28:38 | 显示全部楼层
回复 10# powerbat


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

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 11:48 , Processed in 0.019924 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表