通过VBS得到机器中已经安装的软件 - 孙振芳

王朝vb·作者佚名  2006-06-27
窄屏简体版  字體: |||超大  

有时我们需要知道某台机器上安装了哪些软件或者是否安装了某个软件,这样我们必须通过读取注册表的方式来得到这种信息。通常我们在SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall键下得到软件信息。下面是我在工作中的一个例子。

'Written by SunZhenfang 200603

Const HKEY_LOCAL_MACHINE = &H80000002

Set Shell = CreateObject("WScript.Network")

strComputer = Shell.ComputerName' 此处我们通过WScript.Network得到的ComputerName为运行此段VBS脚本的计算件名,若改为其他机器的名字,并具有一定的权限,将可以得到那台计算机上已安装的软件列表

Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")

strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"

objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys

Num = 0

Dim strArray()

For Each Subkey in arrSubKeys

strDetail = strKeyPath & "\" & SubKey

objReg.EnumValues HKEY_LOCAL_MACHINE, strDetail,arrEntryNames,arrValueTypes

objReg.GetStringValue HKEY_LOCAL_MACHINE, strDetail, "DisplayName", strValue

If Not IsNull(strValue) Then

ReDim Preserve strArray(Num+1)

strArray(Num) = strValue

Num = Num + 1

End If

Next

' 将得到的结果排序

For i=0 To UBound(strArray)-1

For j=i+1 To UBound(strArray)-1

If(strArray(i)>strArray(j)) Then

tmp = strArray(i)

strArray(i) = strArray(j)

strArray(j) = tmp

End If

Next

Next

'将得到的结果输出到一个以计算机名命名的文本文件中

Set fso = CreateObject("Scripting.FileSystemObject")

Set fle = fso.CreateTextFile(strComputer + ".txt", True)

For k=0 To UBound(strArray)-1

fle.WriteLine(strArray(k))

Next

fle.Close()

将上述代码存成一个VBS文件,运行后将得到一个以计算机名命名的文本文件,打开这个文本文件,你就能看到你的计算机上装了什么软件了,看看和添加/删除程序里面是否一样?

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航