有时我们需要知道某台机器上安装了哪些软件或者是否安装了某个软件,这样我们必须通过读取注册表的方式来得到这种信息。通常我们在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文件,运行后将得到一个以计算机名命名的文本文件,打开这个文本文件,你就能看到你的计算机上装了什么软件了,看看和添加/删除程序里面是否一样?