怎么读取注册表下DisplayName和InstallLocation的值?
电脑安装了什么软件,这些软件的安装位置在什么地方,现在还是没有搞定。
现在想到了一个变通的办法,就是读取注册表的值:“SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall”
这个地方下面有很多安装软件的信息,我发现基本上都有DisplayName,但是很多没有InstallLocation,个别的软件,桌面的快捷方式都可以看到指向什么目录下的exe,但是注册表InstallLocation的值却是空白的
请问怎么办?
谢谢先! --------------------编程问答-------------------- 楼主头像很好看 --------------------编程问答-------------------- 继续请教
!!!!!
--------------------编程问答-------------------- 现在我找到了vbs的代码,但是我要改成vb使用的,下面的代码,不是完全通用,请大侠帮帮忙改一下,谢谢先:
'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()
Dim strArray2()
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
objReg.GetStringValue HKEY_LOCAL_MACHINE, strDetail, "InstallLocation", strValue
If Not IsNull(strValue) Then
strArray(Num) =strArray(Num) & ",\" & strValue & "\"
else
strArray(Num) =strArray(Num) & ",NULL"
end if
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()
补充:VB , 多媒体