如何使用脚本锁定任务栏?

所属分类: 脚本专栏 / vbs 阅读数: 2326
收藏 0 赞 0 分享
复制代码 代码如下:

HKEY_CURRENT_USER = &H80000001 

strComputer = "." 
Set objReg = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv") 

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 
ValueName = "TaskBarSizeMove" 
dwValue = 0 

objReg.SetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue 

事实证明,通过切换注册表中的一个值就可以锁定或者解除锁定任务栏;更确切地说,就是通过切换注册表值 Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\TaskBarSizeMove。将该值设置为 0 即可锁定任务栏;将其设置为 1 就可解除锁定任务栏。正如您可能预想的那样,要锁定任务栏,我们的脚本只需将 TaskBarSizeMove 的值设置为 0 就万事大吉了。

要实现该功能,该脚本首先要定义一个名为 HKEY_CURRENT_USER 的常量,并将其值设置为 &H80000001;我们将使用这个常量来指示脚本要处理哪个注册表配置单元。(锁定和解除锁定任务栏均是针对单个用户完成的。)然后,我们利用以下两行代码连接到本地计算机上的 WMI 服务:

strComputer = "."
Set objReg = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

不过不用担心;您并不仅限于在本机上运行该脚本。而是很容易就可以对该脚本进行修改,以在远程计算机环境下运行。为此,只需将计算机的名称赋值给变量 strComputer 即可。例如,下面的代码会绑定到名为 atl-ws-01 的计算机上的 WMI 服务:

strComputer = "atl-ws-01"
Set objReg = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

这会比往返于各办公室并手动锁定 300 到 400 台计算机上的任务栏更轻松吗?我们不能确切地下这种结论,但它听起来的确要轻松些,不是吗?

在连接到 WMI 服务后,可将注册表路径 (Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced) 赋值给一个名为 strKeyPath 的变量。然后再将我们要更改的实际的注册表值 (TaskBarSizeMove) 赋值给一个名为 ValueName 的变量。最后,再将值 0 赋值给一个名为 dwValue 的变量。该变量代表了我们要赋值给 TaskBarSizeMove 的值。 

注意:如果我们想解除锁定任务栏而不是想对其进行锁定怎么办?没问题;只需将值 1 赋值给 dwValue 即可。


现在我们所要做的就是调用 SetDWORDValue 方法,将常量 HKEY_CURRENT_USER 和变量 strKeyPath、ValueName 及 dwValue 作为参数传递:

objReg.SetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue

这样就大功告成了,但您可能必须先注销,然后再次登录,此更改才能真正生效。因此,您可能想要将该代码添加到注销脚本;这样当用户注销时,更改就会自动生效。用户下次登录时,任务栏将会被锁定。

我们的脚本专家是多么迫切地希望他在 10 年前就会编写出这样的脚本。当然,即使这样,他也仍必须将该脚本复制到一张软盘上,然后随身带着这张软盘往返于各办公室。此外,那时既没有 Windows Script Host 也没有 WMI,因此运行该脚本还是有一些难度。但这些只是一些琐碎的事情,我们的脚本专家必然会找到一个避开这类小问题的方法。

更多精彩内容其他人还在看

vbscript Split函数用法详解(字符串转数组函数)

本文详细介绍了vbscript中split函数的用法,有关split函数的一些实例,vbscript中split函数的语法介绍,有需要的朋友参考下
收藏 0 赞 0 分享

VBS实现将Excel表格保存为txt文本

希望能够找到个能给excel表另存为TXT的VBS代码,虽然另存为可以选择,但还是需要直接VBS执行这一步另存为TXT格式的,应该如何写代码呢
收藏 0 赞 0 分享

vbs解决处理TXT文本数据相关问题实现代码

使用vbs处理txt数据时,会遇到一些问题,本文将提供详细的解决方法,希望可以帮助你们
收藏 0 赞 0 分享

关于vbs 生成静态页面过程中出现的问题

访问某个aspx页面,然后把服务器返回的页面以filestream 的形式保存为html格式,接下来将介绍实现代码
收藏 0 赞 0 分享

dim函数第三个参数设置截取字符的长度问题

dim函数的第三个参数,也就是截取字符的长度,我在设置这个的时候,出了些问题,提示无效的过程调用或参数,本文详细介绍如何解决
收藏 0 赞 0 分享

邪恶的eval和new Function使用介绍

这些代码可以干什么?可以肯定的是可以干很多猥琐的事
收藏 0 赞 0 分享

WScript.Shell对象SpecialFolders属性未公开文档分享

WshShell对象的SpecialFolders属性返WshSpecialFolders 对象,该对象是一个特殊文件夹集合,其中包含整套Windows特殊文件夹
收藏 0 赞 0 分享

用VBS修改(设置)系统时间和日期的代码

用 VBS 把系统的时间修改到2038年1月19日3时14分07秒之后,这样某些依赖于 Unix 时间戳的程序就会出问题。那么怎样用 VBS 修改系统的时间呢
收藏 0 赞 0 分享

VBS For Next循环的一些细节

For Next 语句是 VBS 中常用的循环语句,你可能已经用过无数次 For Next 循环,但是你是否注意过它的一些细节呢
收藏 0 赞 0 分享

VBS For Next循环的陷阱分享

在《VBS For Next循环的一些细节》中说到了 For Next 循环的控制变量仅仅在循环开始前求值一次,但是其中存在一处陷阱
收藏 0 赞 0 分享
查看更多