第三个错了!
http://www.csdn.net/expert/topic/559/559463.xml?temp=.9695246

解决方案 »

  1.   

    http://www.vbeden.com/download/code_17/addeasy.zip
      

  2.   

    UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP
      

  3.   

    我的意思是,用getvalue(我自定义的一个读注册标的函数)得到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{23F4EABE-626D-4225-B7A9-3043C29537B1}这个子键,要得到它右面的"DisplayName"这个子键的内容,如我的是"东方光驱魔术师",怎么得到?
      

  4.   

    我的意思是,用getvalue(我自定义的一个读注册标的函数)得到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{23F4EABE-626D-4225-B7A9-3043C29537B1}这个子键,要得到它右面的"DisplayName"这个子键的内容,如我的是"东方光驱魔术师",怎么得到?
      

  5.   

    UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP
      

  6.   

    UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP UP
      

  7.   

    API函数,RegOpenKeyEx打开注册表的一个键,RegQueryValueEx获得键下的某一个项的值。
      

  8.   

    用API函数:RegQueryValueEx 
    Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long         ' Note that if you declare the lpData parameter as String, you must pass it By Value. 
      

  9.   

    给你个例子:RegQueryValueEx(hKey, "yesnovalue", 0, lptype, 0, length)
      

  10.   

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
    里面都是 每个软件安装 及 反安装工具  的信息和 路径.
    你只要 读出这些值, 
    照着 里面 的反安装键值 调用程序即可.
      

  11.   

    RegQueryValueEx
    我记得袁飞api工具里有个例子
      

  12.   

    安装完VB 后, 在其 目录下,有个 Template 目录中,有个 MS 对注册表操作的BAS 文件.你把它添加到你的工程中.
    再如下使用:
    '从 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall'读取 软件安装信息.
    '以 QQ2000 为例.
    Dim strReturn As String '返回 QQ 卸载程序路径 及 运行此程序的参数
    strReturn = GetKeyValue(HKEY_LOCAL_MACHINE,"QQ2000","UninstallString")
    '运行 卸载 QQ2000 .
    Shell strReturn 
      

  13.   

    感谢您使用微软产品。您可以使用RegOpenKey,RegQueryValueEx,RegCloseKey等API函数查询注册表信息。
    如下例,先用RegOpenKey打开相关注册表键的路径,再用RegQueryValueEx根据键名称查询键值,结果存储在该函数第五个参数szData指定的buffer中。Option Explicit
    Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" ( _
       ByVal hKey As Long, _
       ByVal lpSubKey As String, _
       ByVal ulOptions As Long, _
       ByVal samDesired As Long, _
       phkResult As Long) As LongPrivate Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" ( _
       ByVal hKey As Long, _
       ByVal lpValueName As String, _
       ByVal lpReserved As Long, _
       ByVal lpType As Long, _
       ByVal lpData As String, _
       lpcbData As Long _
    ) As LongPrivate Declare Function RegCloseKey Lib "advapi32.dll" ( _
       ByVal hKey As Long _
    ) As LongPrivate szData As String * 255
    Private Const REG_SZ = 1
    Private Const KEY_CREATE_LINK = &H20
    Private Const KEY_CREATE_SUB_KEY = &H4
    Private Const KEY_ENUMERATE_SUB_KEYS = &H8
    Private Const STANDARD_RIGHTS_ALL = &H1F0000
    Private Const KEY_QUERY_VALUE = &H1
    Private Const KEY_SET_VALUE = &H2
    Private Const KEY_NOTIFY = &H10
    Private Const SYNCHRONIZE = &H100000Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or _
    KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or _
    KEY_CREATE_LINK) And (Not SYNCHRONIZE))Private Const HKEY_CURRENT_USER = &H80000001
    Private Const HKEY_LOCAL_MACHINE = &H80000002Private Sub Command1_Click()    Dim RetVal As Integer
        Dim szValue As String
        
        Dim hKey As Long
        Dim sType As Long
        
        RetVal = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{005F0409-6759-11D5-A54F-0090278A1BB8}", 0&, KEY_ALL_ACCESS, hKey)
        
        If ((RegQueryValueEx(hKey, "DisplayName", 0, sType, szData, Len(szData))) <> 0) Then
        
           ' Error Handling ---- Something Wrong
           MsgBox "regQuery error"
        Else
        
           ' Error Handling ---- Nothing Wrong
           Text1.Text = szData  '这是您需要的值。
        
        End If
        
        RetVal = RegCloseKey(hKey)End Sub关于与注册表有关的函数请参考:
    Registry Functions
    http://msdn.microsoft.com/library/en-us/sysinfo/regapi_59mb.asp您可以从以下链接中通过注册表获得打印机信息的例子中获得感兴趣的信息。
    Q143274 HOWTO: Retrieve Printer Name from Windows95/98/Me Registry in VB
    http://support.microsoft.com/support/kb/articles/q143/2/74.asp- 微软全球技术中心 VB技术支持本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款
    (http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
    为了为您创建更好的讨论环境,请参加我们的用户满意度调查
    (http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
      

  14.   

    不好意思! sonicdater(发呆呆)
      

  15.   

    UP GZ都是什么意思??
      

  16.   

    我想把左面的TREEVIEW中UNINSTALL下的所有键值都遍历一遍,怎么办?
    不是就某一项!而且我不知道具体是哪一个!
      

  17.   

    遍历 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
    ==================================================================
    Const ERROR_NO_MORE_ITEMS = 259&
    Const HKEY_CURRENT_CONFIG = &H80000005
    Const HKEY_LOCAL_MACHINE = &H80000002
    Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Private Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As Any) As Long
    Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As LongPrivate Sub Form_Load()
        Dim hKey As Long, Cnt As Long, sName As String, sData As String, Ret As Long, RetData As Long
        Const BUFFER_SIZE As Long = 255
        'Set the forms graphics mode to persistent
        Me.AutoRedraw = True
        Me.Print "RegEnumKeyEx"
        Ret = BUFFER_SIZE
        Cnt = 0
        'Open a registry key
        If RegOpenKey(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Uninstall", hKey) = 0 Then
            'initialize
            sName = Space(BUFFER_SIZE)
            sData = Space(BUFFER_SIZE)
            Ret = BUFFER_SIZE
            RetData = BUFFER_SIZE
            'enumerate the values
            While RegEnumValue(hKey, Cnt, sName, Ret, 0, ByVal 0&, ByVal sData, RetData) <> ERROR_NO_MORE_ITEMS
                'show data
                If RetData > 0 Then Me.Print " " + Left$(sName, Ret) + "=" + Left$(sData, RetData - 1)
                'prepare for next value
                Cnt = Cnt + 1
                sName = Space(BUFFER_SIZE)
                sData = Space(BUFFER_SIZE)
                Ret = BUFFER_SIZE
                RetData = BUFFER_SIZE
            Wend
            'Close the registry key
            RegCloseKey hKey
        Else
            Me.Print " Error while calling RegOpenKey"
        End If
    End Sub
    ================================================================== 对遍历结果,你可以 存储于 数组中,在用前面所说的方法 一个一个的读出 相关信息. 注意, 对于 一般软件, 它的 反安装 键名为:UninstallString .
    但也有例外, 如:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\ShockwaveFlash
    它的反安装键名是:QuietUninstallString 
    当然,它是个Ocx ,你可以不删除它.
      

  18.   

    打开注册表中的项用下面的api:
    Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
    枚举项和键值用下面的api:
    Private Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long
    Private Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long
    Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long
    ok?
    给分吧!谢谢!
      

  19.   

    sonicdater(发呆呆)
    我想这样:我观察了UNINTALL下面的键值,发现有的东西不提供卸载,所以,我觉得应该判断一下,
    UnIntallString和DisPlayName都存在的话,可以删除;只有一个存在,不可删除!对吗?