快速业务通道

用vbs检索在运行对话框中键入的一系列命令的代码

作者 佚名 来源 ASP编程 浏览 发布时间 2013-07-09
问:
您好,脚本专家!有时,我在运行对话框中键入了多个命令,随后想要对其进行检索。我知道我最近使用过的命令缓存在某个地方,因为当我开始在运行对话框中键入时,它们便会显示出来。如何使用脚本检索这些命令?
--KJ
答:
您好,KJ。您知道,一看到您的问题,我们首先想到的是:为什么我们没有想过这个问题?不用说,脚本专家使用运行对话框已经有好多年了,并且我们也非常清楚地知道,最近使用的命令(如果您统计过的话,是最近使用过的26个)缓存在计算机上的某个地方。然而,我们从未编写过可检索此列表的脚本。我们怎么能忽略如此明显的事情呢?
注意:事实上,令人吃惊的绝不仅限于我们已忽略了如此明显的事情。例如,到目前为止,脚本专家已在其当前所在的大厦中呆了大约一年的时间了,然而就在几个星期前,编写本专栏的脚本专家才发现有从其办公室通往楼下大厅的楼梯。
稍加摸索后,我们发现该信息存储在注册表中;更确切地说,它作为单个注册表值存储在注册表项HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU中。这样不是很好吗?当然很好;毕竟,这使得我们能够编写以下脚本:
复制代码 代码如下:

ConstHKEY_CURRENT_USER=&H80000001
strComputer="."
SetobjRegistry=GetObject("winmgmts:\\"&strComputer&"\root\default:StdRegProv")
strKeyPath="Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU"
objRegistry.EnumValuesHKEY_CURRENT_USER,strKeyPath,arrValueNames,arrValueTypes
ForEachstrValueinarrValueNames
IfLen(strValue)=1Then
objRegistry.GetStringValueHKEY_CURRENT_USER,strKeyPath,strValue,strRunCommand
intLength=Len(strRunCommand)
strRunCommand=Left(strRunCommand,intLength-2)
Wscript.EchostrRunCommand
EndIf
Next
该脚本连接到RunMRU项,然后枚举在此处找到的所有值的值。(是的,我们知道:值的值?这便是注册表术语的有趣之处。)要实现该功能,该脚本首先定义一个名为HKEY_CURRENT_USER的常量,并将该值设置为&H80000001;稍后将使用该常量来告知脚本要处理的注册表配置单元。然后,我们连接到本地计算机上的WMI服务,务必绑定到root\default命名空间,即WMI注册表提供程序的主目录。
注意:我们可使用此相同的脚本来检索远程计算机中最近使用过的命令吗?当然可以;只需将远程计算机的名称分配给变量strComputer即可。
连接到WMI服务后,将值Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU分配给名为strKeyPath的变量。然后使用EnumValues方法来获取RunMRU项中所有注册表值的集合:
objRegistry.EnumValuesHKEY_CURRENT_USER,strKeyPath,arrValueNames,arrValueTypes
正如您所看到的那样,我们将四个参数传递给EnumValues:
参数
说明
HKEY_CURRENT_USER
可在其中找到信息的注册表配置单元。
strKeyPath
HKCU配置单元中RunMRU项的路径。
arrValueNames
这是一个“输出”参数,用作存储所有注册表值名称的位置。我们所要做的就是为EnumValues提供一个变量名;然后,EnumValues将使用RunMRU中的所有值名称来填充此变量。
arrValueTypes
另一输出参数,此参数含有与RunMRU中找到的每个值相对应的数据类型。这个参数是必需的,但是由于在RunMRU中找到的值的数据类型均为REG_SZ,因此,我们实际上在脚本中并不使用它。
事实证明,在“运行”对话框中键入的每个命令在注册表中都有其对应值;通过使用字母A到Z为这些值分配了名称(这也就解释了为何在注册表中只有26个最近使用的命令被跟踪的原因)。在注册表中,RunMRU如下图所示:

执行EnumValues方法后,我们将返回所有这些值名称的集合;换言之,我们的集合将由字母A到Z组成。非常不错,

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号