• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >vbs > 用vbscript防止本地用户更改其密码

用vbscript防止本地用户更改其密码

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了vbscript,vbscript教程,vbscript是什么,vbscript.dll,vbscript下载等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问:

嗨,Scripting Guy!如何配置本地用户帐户以使该用户无法更改其密码?

-- DC

</div></div>
答:

嗨,DC。这其中的秘密就在于神秘的 userFlags 属性。我们先向您介绍如何设置用户帐户以使用户无法更改其密码,然后介绍可以使用 userFlags 属性管理的一些其他本地用户帐户属性。运气好的话,还可以赶上吃午餐哩!

我们先来介绍可以防止用户更改其密码的脚本:

首先,定义一个常量(它有一个好记的名称 ADS_UF_PASSWD_CANT_CHANGE),我们需要用它来标识 userFlags 属性内的正确“开关”。userFlags 属性是一种位掩码属性示例,它包含多个属性和属性值。姑且将位掩码视为一组开关,每个开关表示一种不同的属性。如果将“用户不能更改密码”开关打开,则用户无法更改其密码;如果将开关关闭,则用户可以 更改其密码。这部分内容还算浅显易懂;位掩码唯一不好处理的地方是,“开关”名称可不像“用户不能更改密码”这样好记,它们使用的是类似于 &H0040 的十六进制值。要执行这项任务,我们需要切换“&H0040”开关,这就是我们定义这一常量的原因。

接下来,连接到计算机 atl-ws-01 上的 kenmyer 帐户。此时,我们检查相关开关是否已打开。在使用位掩码时,您通常会看到类似下面的代码:

If objUser.UserFlags AND ADS_UF_PASSWD_CANT_CHANGE Then

我们可以用浅显的语言来说明以上代码:如果存在 userFlags 属性,并且打开了 ADS_UF_PASSWD_CANT_CHANGE 开关,则该语句为真,并且应执行某种操作。就这项任务而言,我们并不关心处于打开状态的开关;如果设置了“不能更改密码”标志,我们的工作即告完成。我们只关心处于关闭状态的开关。因此,我们编写了下面这行代码;只有当开关未 处于打开状态时,它才会起作用:

If Not objUser.UserFlags AND ADS_UF_PASSWD_CANT_CHANGE Then

接下来的内容可就真的 要让您伤脑筋了。请看下面这行代码:

objPasswordNoChangeFlag = objUser.UserFlags XOR ADS_UF_PASSWD_CANT_CHANGE

尽管看起来有点复杂,实际上这行代码确实非常简单。我们此处执行的全部操作是切换“用户不能更改密码”开关的值。这正是 XOR 命令的功能。如果开关处于打开状态,则 XOR 将其关闭;如果开关处于关闭状态,则 XOR 将其打开。我们要做的就是获取 userFlags 属性的当前值,并切换“用户不能更改密码”开关。因为我们已经知道该开关处于关闭状态(还记得我们刚才使用的“If Not”语句吗?),所以 XOR 命令将该开关打开。变量 objPasswordNoChangeFlag 中包含的值将与当前 userFlags 属性中的值完全相同,唯一不同之处在于,“用户不能更改密码”开关此时处于打开状态,而不是处于关闭状态。

跟得上我们的思路吗?脚本的其余部分就非常简单了。下面这行代码将变量 objPasswordNoChangeFlag 的值写入 userFlags 属性:

objUser.Put "userFlags", objPasswordNoChangeFlag

然后,我们使用 SetInfo 命令将这些更改写入用户帐户。通过运行这样一个脚本,使本地用户 Ken Myer 不再拥有在计算机 atl-ws-01 上更改其密码的权限。

那么,如果您想允许 Ken Myer 更改其密码,该怎么办呢?那还不简单。只需检查“用户不能更改密码”开关是否处于打开 状态,如果是,则使用 XOR 将其关闭:

Const ADS_UF_PASSWD_CANT_CHANGE = &H0040

Set objUser = GetObject("WinNT://atl-ws-01/kenmyer")

If objUser.UserFlags AND ADS_UF_PASSWD_CANT_CHANGE Then
  objPasswordNoChangeFlag = objUser.UserFlags XOR ADS_UF_PASSWD_CANT_CHANGE
  objUser.Put "userFlags", objPasswordNoChangeFlag 
  objUser.SetInfo
End If

唯一不同之处在于,我们从 If-Then 语句中删除了 Not 一词。这是因为,我们现在想要 查找开关处于打开状态的情况,然后将其关闭。

我们承认,这些位掩码属性的确 让人难懂。如果您想了解详细信息(以及一些图片),请参见“Microsoft Windows 2000 脚本编写指南”中的这一部分。正如前面所承诺的一样,我们在下面列出了可以使用 userFlags 属性进行管理的一些其他本地用户帐户属性:

属性

常量

值

将执行登录脚本

ADS_UF_SCRIPT

&H0001

禁用帐户

ADS_UF_ACCOUNTDISABLE

&H0002

帐户需要主目录

ADS_UF_HOMEDIR_REQUIRED

&H0008

锁定帐户

ADS_UF_LOCKOUT

&H0010

帐户不需要密码

ADS_UF_PASSWD_NOTREQD

&H0020

用户不能更改密码

ADS_UF_PASSWD_CANT_CHANGE

&H0040

允许加密文本密码

ADS_UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED

&H0080

帐户密码永不过期

ADS_UF_DONT_EXPIRE_PASSWD

&H10000

登录需要使用智能卡

ADS_UF_SMARTCARD_REQUIRED

&H40000

密码已过期

ADS_UF_PASSWORD_EXPIRED

&H800000

</div>

如果什么时候没有事情可做,请将这些值替换到“用户不能更改密码”脚本中,看会出现什么情况。(当然,我们始终建议您,在用这样的脚本做试验时,请使用测试计算机,或者至少应使用测试帐户。)

</div> </div>

您可能想查找下面的文章:

  • VBScript语法速查及实例说明
  • VBScript的入门学习资料
  • VBScript教程 第一课什么是VBScript
  • VBScript教程 第二课在HTML页面中添加VBscript代码
  • VBScript教程 第三课VBScript数据类型
  • VBScript教程 第四课VBScript变量
  • VBscript教程 第五课 VBScript常数
  • VBScript教程 第六课VBScript运算符
  • VBScript教程 第七课使用条件语句
  • VBScript教程 第八课 使用循环语句

相关文章

  • 查看系统C盘剩余空间的VBS脚本
  • VBS教程:函数-CLng 函数
  • VBS教程:函数-IsEmpty 函数
  • 用VBS将一篇txt后缀的内容保存为html格式
  • 用vbs实现注册表开关的脚本
  • VBS教程:属性-DateCreated 属性
  • 用VBS修改IIS Metabase 的代码
  • vbs枚举进程 vbs列出进程的详细列表
  • VBS显示当前标准时间
  • VBS教程:函数-转换函数

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • vbs病毒制作之一复制自身的vbs脚本
    • VBS教程:对象-Class 对象
    • VBS教程:VBscript语句-Exit 语句
    • 刷QQ群的VBS脚本
    • VBS教程:函数-String 函数
    • VBS教程:VBScript 页面的简单样例
    • VBScript 中的字节数据操作函数
    • 用VBS实现的批量gb2312转utf-8,支持拖动
    • 用vbs实现向任何电子邮件发送邮件
    • 两个批量挂马vbs脚本代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有