欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

用vbscript实现修改屏幕保护的等待时间长度

程序员文章站 2022-03-21 11:02:01
问: 嗨,scripting guy!是否可以使用脚本来修改计算机上屏幕保护的等待时间长度? -- jn 答: 嗨,jn。出于某些原因,microsof...
问:
嗨,scripting guy!是否可以使用脚本来修改计算机上屏幕保护的等待时间长度?
-- jn
答:
嗨,jn。出于某些原因,microsoft 的脚本技术在涉及 windows 设置和组件方面有些不足,例如屏幕保护、墙纸、任务栏和开始菜单等等。您可以使用 wmi(尤其是 win32_desktop 类)来读取这些值,但不能使用 win32_desktop 类(或是任何等价的类或对象)来修改这些值。为什么呢?老实说,我们也不知道;
幸好,这些值大都存储在 windows 注册表中,而只要这些值存储在注册表中,您就可以编写脚本来管理它们。屏幕保护程序也不例外。打开 regedit,让我们来看看 hkey_current_user 内部;在 control panel\desktop 项中,您将会看到几个与屏幕保护程序有关的注册表值,包括 screensavetimeout。您可能猜到了,这就是确定屏幕保护等待的时间长度的注册表值。默认情况下,这个值被设置为 600 秒,也就是 10 分钟。
那么,如何更改这个值呢?通过使用如下的脚本可以将等待时间更改为 5 分钟(300 秒):
hkey_current_user = &h80000001
strcomputer = "."
set objreg = getobject("winmgmts:\\" & strcomputer & "\root\default:stdregprov")
strkeypath = "control panel\desktop"
objreg.createkey hkey_current_user, strkeypath
valuename = "screensavetimeout"
strvalue = "300"
objreg.setstringvalue hkey_current_user, strkeypath, valuename, strvalue
为了达到这个目的,我们首先创建一个名为 hkey_current_user 的常量,并将它的值设置为 &h80000001;这告诉 wmi 的注册表提供程序,我们正在处理注册表的 hkey_current_user 部分。如果我们要处理 hkey_local_machine,那么我们就需要将常量设置为 &h80000001;将常量设置为 &h80000003 则可以处理 hkey_users。
由于我们在本地计算机上执行这个脚本,因此我们将变量 strcomputer 设置为点(在 wmi 中表示本地计算机的快捷方式)。注册表提供程序的出色之处在于,它可以在远程计算机上工作,并且性能和在本地计算机上一样好。因此如果您希望更改远程计算机上的屏幕保护等待时间,只需将 strcomputer 的值设置为那台计算机的名称即可。
从此时开始,我们连接到 wmi 服务,并指定注册表路径 (control panel\desktop)。接下来我们将调用 createkey 方法。这是为了保险起见。因为如果我们查找的注册表项不存在,则 createkey 就会创建这个注册表项。如果注册表项已经存在,那么 createkey 将会保留这个注册表项。
在指定要更改的注册表值名称 (screensavetimeout) 以及新值 (300) 之后,接下来我们使用 setstringvalue 方法来将等待时间更改为 300 秒。
还不算太坏,是吧?有关注册表提供程序——可能是所有 wmi 提供程序中最不常用的一个了——的更多信息,请参阅“microsoft windows 2000 脚本指南”中的 “注册表”一章。并访问声名不佳的tweakomatic,这个令人惊奇的实用工具可以编写可对注册表进行读写操作的脚本。为了从传统商业中沾光,它使用了 tweakomatic 的名字,这的确大有好处。
顺便提及,以下是另一个比较有用的屏幕保护程序脚本,这个脚本可以确保屏幕保护程序受到密码保护:
hkey_current_user = &h80000001
strcomputer = "."
set objreg = getobject("winmgmts:\\" & strcomputer & "\root\default:stdregprov")
strkeypath = "control panel\desktop"
objreg.createkey hkey_current_user, strkeypath
valuename = "screensaverissecure"
strvalue = "1"
objreg.setstringvalue hkey_current_user, strkeypath, valuename, strvalue
你看,注册表脚本编写多么有趣?!tweakomatic 还有其他脚本可以用来管理屏幕保护程序、开始菜单、任务栏、windows 资源管理器文件夹设置以及更多内容。如果您正在寻找管理常见桌面设置的方法,这是一个开始进行工作的好地方。