当前位置:编程学习 > VB >>

怎么读取注册表下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 ,  多媒体
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,