問: 您好,腳本專家!如何列出注冊表中 Run 項中的所有項目? -- JW 答: 您好,JW。如何列出注冊表中 Run 項中的所有項目?坦白地講,我們不打算告訴您。真的很抱歉。不是因為我們不喜歡您,而是因為我們認(rèn)為我們有一個更好的答案給您。(如果我們錯了,那好,我們只能說這不會是第一次。) 由于您對 Run 項感興趣,因此我們假定您真正想知道的是如何找出哪些程序被配置為在每次 Windows 啟動時自動運(yùn)行。您一定可以從 Run 項中讀取到該信息,不要對此產(chǎn)生懷疑。實際上,您可以從 Run 項中讀取到該信息,查看一下是否 HKEY_CURRENT_USER 和 HKEY_LOCAL_MACHINE 中都具有 Run 項。它們中都具有 RunOnce 項。接下來是 Startup 文件夾、All Users Startup 文件夾等等。 您已經(jīng)找到問題的答案了。試圖找出哪些程序被配置為在每次 Windows 啟動時自動運(yùn)行的問題時所牽涉到的問題就是該信息可能存儲在數(shù)量眾多的不同位置中的任一位置中。我們可以編寫一個腳本來檢查這些為數(shù)眾多的位置中的每個位置嗎?肯定可以這樣做。但我們認(rèn)為以下這段腳本更好:
復(fù)制代碼 代碼如下:
strComputer = "." Set objWMIService = GetObject("winmgmts:\\" strComputer "\root\cimv2") Set colStartupCommands = objWMIService.ExecQuery _ ("Select * from Win32_StartupCommand") For Each objStartupCommand in colStartupCommands Wscript.Echo "Command: " objStartupCommand.Command Wscript.Echo "Description: " objStartupCommand.Description Wscript.Echo "Location: " objStartupCommand.Location Wscript.Echo "Name: " objStartupCommand.Name Wscript.Echo "User: " objStartupCommand.User Wscript.Echo Next
不是四處查找并視圖找到 Windows 用來保存自動運(yùn)行程序信息的位置,我們已決定讓 WMI 為我們完成所有此項工作。WMI 類 Win32_StartupCommand 用于查找自動運(yùn)行程序的信息,而不管該信息是存儲在注冊表中、Startup 文件夾中還是其他某個位置中。例如,運(yùn)行此腳本時,將返回類似于下面內(nèi)容的信息: Command: Microsoft Office OneNote 2003 Quick Launch.lnk Description: Microsoft Office OneNote 2003 Quick Launch Location: Startup Name: Microsoft Office OneNote 2003 Quick Launch User: FABRIKAM\kenmyer Command: C:\WINDOWS\System32\ctfmon.exe Description: ctfmon.exe Location: HKU\S-1-5-21-1987391165-1004336648-1605550848-8553\SOFTWARE\Microsoft\ Windows\CurrentVersion\Run Name: ctfmon.exe User: FABRIKAM\kenmyer 正如您所見,存在兩個不同的自動運(yùn)行程序:一個程序在 Startup 文件夾中有快捷方式,另一個程序是注冊表的 HKEY_USERS 部分中的 Run 中所列出的應(yīng)用程序。(還有另一個可能存儲了自動運(yùn)行信息的計算機(jī)上的位置。)我們的一個簡單的小腳本可以在數(shù)秒鐘內(nèi)調(diào)用并檢索到有關(guān)這兩個程序以及任何其他自動運(yùn)行應(yīng)用程序的信息。這就是我們?yōu)楹握J(rèn)為使用 Win32_StartupCommand 的腳本更好的原因。 那么,該腳本本身是如何工作的?是這樣,它幾乎同曾經(jīng)要編寫的 WMI 腳本一樣簡單。我們首先連接到本地計算機(jī)上的 WMI 服務(wù)。不用說,我們也可以使用此腳本連接到遠(yuǎn)程計算機(jī)上的 WMI 服務(wù)(這將返回已配置為在該計算機(jī)上自動運(yùn)行的程序的列表)。然后我們調(diào)用 ExecQuery 方法并發(fā)出以下查詢,此查詢可調(diào)用并獲取它所能找到的所有自動運(yùn)行程序的集合: Set colStartupCommands = objWMIService.ExecQuery _ ("Select * from Win32_StartupCommand") 現(xiàn)在,剩下要做的事情就是建立一個 For Each 循環(huán)來遍歷程序的集合,并回顯諸如應(yīng)用程序名稱和位置(可在其中找到自動運(yùn)行信息)這樣的數(shù)據(jù)。該方法簡單快捷,最大的優(yōu)勢在于,其返回的信息遠(yuǎn)遠(yuǎn)多于只通過讀取單個注冊表項下所填充的值所能獲取的信息。很不錯吧? 我們希望其會對您有所幫助,JW。如果其未奏效,當(dāng)您真地確實需要只讀取 Run 項并通過使用它來搞定一切時,請告訴我們,這樣我們可以知道我們能夠為您做些什么。還有問題嗎?我們知道最后一塊蛋糕(就是您為您自己保留的那塊蛋糕)被誰吃了嗎?是這樣,我們能夠回答這個問題,JW。但我們不打算這樣做。
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用vbs列出注冊表中 Run 項中的所有項目》,本文關(guān)鍵詞 用,vbs,列出,注冊,表中,Run,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。