一般的应用程序都有从internet升级和从本地升级的功能
主要是自己纪录需要的参数
可以参考注册表程序和app.path

解决方案 »

  1.   

    app.path属性就可以找到本地安装的路径..
      

  2.   

    安装的时候把app.path写入注册表的某个地方,需要的时候读出来就可以了
      

  3.   

    Const gREGKEYSTARTUP = "程序在注册表中的位置"
    Const gREGVALSTARTUP = "Destroy"
     Dim RetV As Integer
     Dim str As String
     
    rc1 = RegOpenKeyEx(HKEY_LOCAL_MACHINE, gREGKEYSTARTUP, 0, KEY_ALL_ACCESS, hKey) ' Open Registry Key
        
        If (rc1 <> ERROR_SUCCESS) Then GoTo GetKeyError         
        
        tmpvalStartup = String$(1024, 0)
        KeyValSizeStartup = 1024    rc1 = RegQueryValueEx(hKey, "Destroy", 0, KeyValType, tmpvalStartup, KeyValSizeStartup)    ' Get/Create Key Value
        If (Asc(Mid(tmpvalStartup, KeyValSizeStartup, 1)) = 0) Then
            tmpvalStartup = Left(tmpvalStartup, KeyValSizeStartup - 1)              
        Else 
            tmpvalStartup = Left(tmpvalStartup, KeyValSizeStartup) 
       End If
        If rc1 <> 0 Then 
          str = App.Path & "\" & App.EXEName & ".exe"  '安装路径
          rc1 = RegSetValueEx(hKey, "winnt", 0, REG_SZ, ByVal str, Len(str) + 10)    End If
        RegCloseKey (hKey)
        
    GetKeyError:
         RegCloseKey (hKey)
         
    End Sub
      

  4.   

    还要加上一个模块
        
    ' Reg Key Security Options(注册表参数信息及API函数)...
    Global Const READ_CONTROL = &H20000
    Global Const KEY_QUERY_VALUE = &H1
    Global Const KEY_SET_VALUE = &H2
    Global Const KEY_CREATE_SUB_KEY = &H4
    Global Const KEY_ENUMERATE_SUB_KEYS = &H8
    Global Const KEY_NOTIFY = &H10
    Global Const KEY_CREATE_LINK = &H20
    Global Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _
                           KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _
                           KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL
     
     ' Reg Key ROOT Types...
    Global Const HKEY_CLASSES_ROOT = &H80000000
    Global Const HKEY_CURRENT_USER = &H80000001
    Global Const HKEY_LOCAL_MACHINE = &H80000002
    Global Const HKEY_USERS = &H80000003
    Global Const HKEY_PERFORMANCE_DATA = &H80000004
    Global Const HKEY_CURRENT_CONFIG = &H80000005
    Global Const HKEY_DYN_DATA = &H80000006
     
     ''Return Value...
    Global Const ERROR_SUCCESS = 0
    Global Const ERROR_ACCESS_DENIED = 5&
    Global Const ERROR_NO_MORE_ITEMS = 259&
     
    ''Reg Data Types...
    Public Const REG_NONE = 0                                          ' No value type
    Public Const REG_SZ = 1                                            ' Unicode nul terminated string
    Public Const REG_EXPAND_SZ = 2                                     ' Unicode nul terminated string
    Public Const REG_BINARY = 3                                        ' Free form binary
    Public Const REG_DWORD = 4                                         ' 32-bit number
    Public Const REG_DWORD_LITTLE_ENDIAN = 4                           ' 32-bit number (same as REG_DWORD)
    Public Const REG_DWORD_BIG_ENDIAN = 5                              ' 32-bit number
    Public Const REG_LINK = 6                                          ' Symbolic Link (unicode)
    Public Const REG_MULTI_SZ = 7                                      ' Multiple Unicode strings
    Public Const REG_RESOURCE_LIST = 8                                 ' Resource list in the resource map
    Public Const REG_FULL_RESOURCE_DESCRIPTOR = 9                      ' Resource list in the hardware description
    Public Const REG_RESOURCE_REQUIREMENTS_LIST = 10Public Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long
    Public Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long
    Public Declare Function RegQueryValue Lib "advapi32.dll" Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue As Long) As Long
    Public Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
    Public Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long         ' Note that if you declare the lpData parameter as String, you must pass it By Value.
    Public Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
    'public Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long
    Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
    Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
    Public Declare Function RegFlushKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Public 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功能:程序第一次运行则建立键值。以后自动检查路径