亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > VBScript > 正文

用vbs檢索在運行對話框中鍵入的一系列命令的代碼

2020-06-26 18:06:59
字體:
來源:轉載
供稿:網友
問: 
您好,腳本專家!有時,我在運行對話框中鍵入了多個命令,隨后想要對其進行檢索。我知道我最近使用過的命令緩存在某個地方,因為當我開始在運行對話框中鍵入時,它們便會顯示出來。如何使用腳本檢索這些命令? 
-- KJ 
答: 
您好,KJ。您知道,一看到您的問題,我們首先想到的是:為什么我們沒有想過這個問題?不用說,腳本專家使用運行對話框已經有好多年了,并且我們也非常清楚地知道,最近使用的命令(如果您統計過的話,是最近使用過的 26 個)緩存在計算機上的某個地方。然而,我們從未編寫過可檢索此列表的腳本。我們怎么能忽略如此明顯的事情呢? 
注意:事實上,令人吃驚的絕不僅限于我們已忽略了如此明顯的事情。例如,到目前為止,腳本專家已在其當前所在的大廈中呆了大約一年的時間了,然而就在幾個星期前,編寫本專欄的腳本專家才發現有從其辦公室通往樓下大廳的樓梯。 
稍加摸索后,我們發現該信息存儲在注冊表中;更確切地說,它作為單個注冊表值存儲在注冊表項 HKCU/Software/Microsoft/Windows/CurrentVersion/Explorer/RunMRU 中。這樣不是很好嗎?當然很好;畢竟,這使得我們能夠編寫以下腳本: 
復制代碼代碼如下:

Const HKEY_CURRENT_USER = &H80000001  
strComputer = "."  
Set objRegistry = GetObject("winmgmts://" & strComputer & "/root/default:StdRegProv")  
strKeyPath = "Software/Microsoft/Windows/CurrentVersion/Explorer/RunMRU"  
objRegistry.EnumValues HKEY_CURRENT_USER, strKeyPath, arrValueNames, arrValueTypes  
For Each strValue in arrValueNames  
    If Len(strValue) = 1 Then  
        objRegistry.GetStringValue HKEY_CURRENT_USER,strKeyPath,strValue,strRunCommand  
        intLength = Len(strRunCommand)  
        strRunCommand = Left(strRunCommand, intLength - 2)  
        Wscript.Echo strRunCommand  
    End If     
Next 
該腳本連接到 RunMRU 項,然后枚舉在此處找到的所有值的值。(是的,我們知道:值的值?這便是注冊表術語的有趣之處。)要實現該功能,該腳本首先定義一個名為 HKEY_CURRENT_USER 的常量,并將該值設置為 &H80000001;稍后將使用該常量來告知腳本要處理的注冊表配置單元。然后,我們連接到本地計算機上的 WMI 服務,務必綁定到 root/default 命名空間,即 WMI 注冊表提供程序的主目錄。 
注意:我們可使用此相同的腳本來檢索遠程計算機中最近使用過的命令嗎?當然可以;只需將遠程計算機的名稱分配給變量 strComputer 即可。 
連接到 WMI 服務后,將值 Software/Microsoft/Windows/CurrentVersion/Explorer/RunMRU 分配給名為 strKeyPath 的變量。然后使用 EnumValues 方法來獲取 RunMRU 項中所有注冊表值的集合: 
objRegistry.EnumValues HKEY_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 如下圖所示: 
用vbs檢索在運行對話框中鍵入的一系列命令的代碼
執行 EnumValues 方法后,我們將返回所有這些值名稱的集合;換言之,我們的集合將由字母 A 到 Z 組成。非常不錯,只是該集合中不包含任何實際命令。要獲得這些命令(這是我們的最終目的),我們需要連接到并讀取注冊表中 26 個值中的每個值。 
我們能這樣做嗎,我們能很容易地連接到注冊表中 26 個值并讀取每一個值嗎?當然可以;事實上,這就是以下這段代碼所執行的操作: 
復制代碼代碼如下:

For Each strValue in arrValueNames  
    If Len(strValue) = 1 Then  
        objRegistry.GetStringValue HKEY_CURRENT_USER,strKeyPath,strValue,strRunCommand  
        intLength = Len(strRunCommand)  
        strRunCommand = Left(strRunCommand, intLength - 2)  
        Wscript.Echo strRunCommand  
    End If     
Next 
您說對了:乍一看,它是有點可怕,不是嗎?告訴您原因吧,讓我們向您介紹一個該 For Each 循環的簡化版本,然后我再解釋為何將一些附加代碼添加到此循環中。該簡化循環如下: 
For Each strValue in arrValueNames 
    objRegistry.GetStringValue HKEY_CURRENT_USER,strKeyPath,strValue,strRunCommand 
    Wscript.Echo strRunCommand 
Next 
在此我們所要做的就是建立一個循環,該循環將遍歷所有注冊表值。要讀取其中的每個值,我們只需調用 GetStringValue 方法: 
objRegistry.GetStringValue HKEY_CURRENT_USER,strKeyPath,strValue,strRunCommand 
GetStringValue 所傳遞的四個參數:常量 HKEY_CURRENT_USER;變量 strKeyPath;變量 strValue(代表各個值的名稱,例如 A、B 或 C);名為 strRunCommand 的輸出參數。通過使用此輸出參數,我們只需指定一個變量名稱,GetStringValue 方法會將注冊表值的值(即,相應的“運行”命令)分配給它。調用 GetStringValue 后,我們將回顯 strRunCommand,繼續循環,并處理集合中的下一個值。 
對于該簡化的 For Each 循環已講了不少了;而真正的 For Each 循環中的所有額外代碼又怎樣呢?之所以使用額外代碼主要是為了可為我們提供稍好些的輸出。例如,在 RunMRU 項中,有一個名為 MRUList 的注冊表值。這并不代表一個實際的命令;而是代表最近使用的命令的先后出現順序。這對我們而言并不重要(至少今天不重要),因此我們寧愿跳過該 MRUList 值。這就是下面的代碼所要執行的操作: 
If Len(strValue) = 1 Then 
在此行代碼中,我們使用 Len 函數來檢查值名稱中的字符數。如果字符數(長度)等于 1,我們將繼續進行并讀取該值。如果長度不等于 1(顯而易見,當 MRUList 具有 7 個字符時,就屬于這種情況),則我們只需跳過該值并移至集合中的下一項即可。 
我們添加的另一小段代碼是: 
intLength = Len(strRunCommand) 
strRunCommand = Left(strRunCommand, intLength - 2) 
如果您查看注冊表,您會發現所有命令的末尾都添加了一個 /1。如果需要的話,可將其保留下來,不過很容易將其去掉。我們所要做的是確定命令的長度,然后使用 Left 函數返回字符串中的第一個 x 字符。x 等于什么?它等于字符總數減 2。這就意味著,我們要獲取除最后 2 個字符(即 /1)以外的所有字符,并將它們回顯到屏幕上。 
至此您已實現了您的目的:一個可返回在運行對話框所鍵入的最近使用的命令的腳本。我們仍不知道神秘的樓梯到底通向哪里,但我們需要先做重要的事情。 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲综合精品一区二区| 日韩成人中文字幕在线观看| 美女福利视频一区| 这里只有精品视频在线| 欧美激情第三页| www日韩中文字幕在线看| 欧美成人免费观看| 亚洲福利影片在线| 国产成人一区二区三区电影| 国产精品久久电影观看| 日韩在线视频观看正片免费网站| 日韩成人激情在线| 日韩av观看网址| 亚洲天堂视频在线观看| 少妇av一区二区三区| 欧美亚洲视频在线观看| 亚洲第一福利视频| 福利视频第一区| 欧亚精品在线观看| 日韩欧中文字幕| 久久久久久有精品国产| 日韩中文字幕在线视频| 午夜免费日韩视频| 欧美午夜精品伦理| 全色精品综合影院| 欧美成年人视频网站| 97国产一区二区精品久久呦| 亚洲欧美日韩爽爽影院| 亚洲午夜久久久影院| 国产福利视频一区二区| 日韩美女激情视频| 国产视频丨精品|在线观看| 久热国产精品视频| 国产精品福利小视频| 国产精品美女免费| 日韩精品视频在线| 蜜月aⅴ免费一区二区三区| 精品美女久久久久久免费| 国产精品亚洲网站| 亚洲国产欧美日韩精品| 久久久久久有精品国产| 久久久久久久久久久91| 日韩国产高清视频在线| 国产精品69精品一区二区三区| 精品亚洲一区二区三区在线观看| 成人免费高清完整版在线观看| 欧美成人中文字幕| 欧美日韩国产999| 高清一区二区三区日本久| 国产精品久久久久久久久久尿| 91国内免费在线视频| 国产成人精品电影| 午夜精品理论片| 精品夜色国产国偷在线| 国产精品美女www| 亚洲精品成人av| 亚洲福利在线观看| 91理论片午午论夜理片久久| 国产成人精品久久二区二区91| 中文字幕亚洲综合久久筱田步美| 亚洲色图偷窥自拍| 羞羞色国产精品| 色综合久久久久久中文网| 亚洲国产日韩精品在线| 亚洲精品自拍偷拍| 亚洲国产精品人久久电影| 欧美一级淫片播放口| 69**夜色精品国产69乱| 精品电影在线观看| 日韩av网址在线观看| 亚洲高清不卡av| 97香蕉超级碰碰久久免费的优势| 亚洲欧美中文日韩在线| 亚洲欧美日韩爽爽影院| 亚洲大胆美女视频| 成人黄色午夜影院| www.久久色.com| 亚洲性69xxxbbb| 亚洲成人久久电影| 国产亚洲精品久久久久动| 日韩中文字幕免费视频| 日本亚洲欧美成人| 主播福利视频一区| 亚洲精品视频在线观看视频| 欧美亚洲伦理www| 亚洲欧美国产日韩天堂区| 国产成人精品在线视频| 亚洲精品99久久久久中文字幕| 欧美日韩国产999| 中文字幕av一区二区三区谷原希美| 国产精品亚洲第一区| 日本精品视频网站| 亚洲综合在线小说| 久久精品久久久久久国产 免费| 久色乳综合思思在线视频| 国产精品国产三级国产aⅴ浪潮| 亚洲激情第一页| 欧美精品在线免费| 欧美大全免费观看电视剧大泉洋| 亚洲国产私拍精品国模在线观看| 欧美激情一区二区三级高清视频| 91av网站在线播放| zzjj国产精品一区二区| 亚洲aa中文字幕| 国产精品一区二区3区| 国产精品久久中文| 亚洲成色777777在线观看影院| 亚洲精品在线91| 亚洲欧洲av一区二区| 亚洲国产欧美自拍| 91视频国产精品| 伊人亚洲福利一区二区三区| 人人澡人人澡人人看欧美| 日本高清不卡在线| 久久天堂av综合合色| 国产精品久久中文| **欧美日韩vr在线| 综合久久五月天| 欧美一级淫片丝袜脚交| 久久亚洲精品一区二区| 日韩亚洲精品电影| 亚洲国产精品国自产拍av秋霞| 日韩亚洲一区二区| 日韩成人在线观看| 久久免费精品日本久久中文字幕| 在线观看欧美日韩| 久久久国产精品免费| 久久久久久久久亚洲| 成人福利视频网| 日韩av不卡电影| 日韩美女写真福利在线观看| 国产精自产拍久久久久久| 久久精品视频导航| 欧美精品18videos性欧美| 欧美激情网站在线观看| 在线播放国产一区二区三区| 91欧美日韩一区| 精品欧美aⅴ在线网站| 上原亚衣av一区二区三区| 久久五月情影视| 2020国产精品视频| 日韩av手机在线看| 日韩中文字幕在线看| 人人做人人澡人人爽欧美| 亚洲一区美女视频在线观看免费| 欧美视频中文在线看| 欧美日韩国产一中文字不卡| 2021国产精品视频| 欧美在线视频一区| 亚洲日韩欧美视频| 少妇高潮 亚洲精品| 国产高清视频一区三区| 亚洲人精品午夜在线观看| 欧美亚洲免费电影| 日韩中文字幕网站| 91久久国产综合久久91精品网站| 日韩免费观看网站| 成人欧美一区二区三区在线| 久久久精品视频成人| 亚洲国产精品yw在线观看| 成人深夜直播免费观看| 97色在线观看免费视频| 久久九九有精品国产23| 欧美极品少妇xxxxx|