回复人: zyl910(910:分儿,我来了!) (2002-1-23 22:36:03)  得0分 
路径是PathStr  
回复人: zyl910(910:分儿,我来了!) (2002-1-23 22:38:37)  得0分 
哦!那里还有个错误:
    If RegGetStr(HKEY_LOCAL_MACHINE, _
            "Software\Microsoft\Windows\CurrentVersion\App Paths\Acrord32.exe", _
            "Path", PathStr) Then
 

解决方案 »

  1.   

    注册表API资料:
    http://www.sqreg.com/file/vb/reg_01.htm
    http://www.sqreg.com/file/vb/reg_02.htm
    http://www.sqreg.com/file/vb/reg_03.htm
    http://www.sqreg.com/file/vb/reg_04.htm
    http://www.sqreg.com/file/vb/reg_05.htm
    http://www.sqreg.com/file/vb/reg_06.htm
    http://www.sqreg.com/file/vb/reg_07.htm
      

  2.   

    zyl910 错误在哪里,怎样改正?!!通过后定给分!
      

  3.   

        If RegGetStr(HKEY_LOCAL_MACHINE, _
                "Software\Microsoft\Windows\CurrentVersion\App Paths\Acrord32.exe", _
                "Path", PathStr) Then
      

  4.   

    改正后仍然PathStr="" 
    我的PC已安装其路径为"D:\Reader\AcroRd32.exe",程序执行PathStr="" zyl910 错误在哪里?!!
        
      

  5.   

    哦!一时没注意,RegGetStr返回0表示成功:
        If RegGetStr(HKEY_LOCAL_MACHINE, _
                "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\Acrord32.exe", _
                "Path", PathStr) Then
            '未安装的代码
        Else
            '已安装的代码
        End If
      

  6.   

    RegGetStr返回0成功后我要提取这个程序安装路径,如PathStr="D:\Reader\AcroRd32.exe"
    现在程序运行后PathStr="" .....????????????????
      

  7.   

    奇怪!我是这样写!怎么返回"A:……"
        Dim PathStr As String
        
        If RegGetStr(HKEY_LOCAL_MACHINE, _
                "Software\Microsoft\Windows\CurrentVersion\App Paths\Acrord32.exe", _
                "Path", PathStr) Then
            MsgBox "B:" + PathStr
        Else
            MsgBox "A:" + PathStr
        End If
      

  8.   

    应该改成:
        If RegGetStr(HKEY_LOCAL_MACHINE, _
                "Software\Microsoft\Windows\CurrentVersion\App Paths\Acrord32.exe", _
                "Path", PathStr) Then
            '未安装的代码
        Else
            '已安装的代码
        End If
    哎!我怎么这么 丢三那四。
      

  9.   

    改成下面的试试,反正我的机子上运行成功了。
        Dim PathStr As String
        
        If RegGetStr(HKEY_LOCAL_MACHINE, _
                "Software\Microsoft\Windows\CurrentVersion\App Paths\Acrord32.exe", _
                "Path", PathStr) Then
            MsgBox "B:" + PathStr
        Else
            MsgBox "A:" + PathStr
        End If
      

  10.   

    If RegGetStr(HKEY_LOCAL_MACHINE, _
                "Software\Microsoft\Windows\CurrentVersion\App Paths\Acrord32.exe", _
                "Path", PathStr) Then
            '未安装的代码
          '已安装其路径为"D:\Reader\AcroRd32.exe" ,程序运行到此总是PathStr=""
    应该 PathStr="D:\Reader\AcroRd32.exe" 才对
    Else        '已安装的代码
        End If
      

  11.   

    If RegGetStr(HKEY_LOCAL_MACHINE, _
                "Software\Microsoft\Windows\CurrentVersion\App Paths\Acrord32.exe", _
                "Path", PathStr) Then
            '不成功!
    Else        '成功!进行处理
        End If
      

  12.   

    程序总是执行到 '不成功!PathStr="" 如果程序能执行到 Else "'成功" 我也能知道 PathStr是否还为"" 
      

  13.   

    我刚卸掉,但卸之前注册表中有值其路径为"D:\Reader\AcroRd32.exe" 
    程序总是执行到 '不成功!PathStr="" 
      

  14.   

    另试ACDSee32.exe 结果还是'不成功!PathStr="" ???
      

  15.   

    只能改成 但始终PathStr=""
    If RegGetStr(HKEY_LOCAL_MACHINE, _
                "Software\Microsoft\Windows\CurrentVersion\App Paths\Acrord32.exe", _
                "Path", PathStr) Then
        IF Rc〈〉0
            '不成功!
            PathStr=""    ELSE        '成功!
         但始终PathStr=""   我试了几个程序 ???? End If成功 Rc=0 不成功 Rc=2
      

  16.   

    注册表中有ACDSee32.exe 那个路径
      

  17.   

    试过我这个例子吗?
        Dim PathStr As String
        
        If RegGetStr(HKEY_LOCAL_MACHINE, _
                "Software\Microsoft\Windows\CurrentVersion\App Paths\Acrord32.exe", _
                "Path", PathStr) Then
            MsgBox "不成功:" + PathStr
        Else
            MsgBox "成功:" + PathStr
        End If
      

  18.   

    试过,总是 MsgBox "不成功:" + PathStr ;PathStr=""
        
      

  19.   

    我机子上成功了(Win98)!
    你是什么操作系统?
      

  20.   

    是声明有问题?我是在模块中声明的
    Public 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
      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.
      Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
     
    Public Const HKEY_LOCAL_MACHINE = &H80000002
    程序是按您的例子
      

  21.   

    写了没有:
    Option Explicit
    Public Const KEY_CREATE_LINK = &H20
    Public Const KEY_CREATE_SUB_KEY = &H4
    Public Const KEY_ENUMERATE_SUB_KEYS = &H8
    Public Const KEY_NOTIFY = &H10
    Public Const KEY_QUERY_VALUE = &H1
    Public Const KEY_SET_VALUE = &H2
    'Public Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
    'Public Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
    'Public Const KEY_EXECUTE = (KEY_READ)
    Public Const STANDARD_RIGHTS_ALL = &H1F0000
    Public Const SYNCHRONIZE = &H100000
    Public 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))Public Const REG_SZ = 1
      

  22.   

    明天我换个机子试一下,或者只知道程序名如ACDSee32.exe 不知道全路径用Shell能启动并打开文件吗??! 您看声明有不合适或漏的吗?多谢
      

  23.   

    如果“ACDSee32.exe”在当前目录(或%Path%指定目录(这是Dos概念))下,那可以启动。以后要记得写“Option Explicit”(如果有变量没定义,VB IDE 会提示。)。