建一个模块
Option ExplicitPublic Declare Function RegCloseKey Lib "advapi32" Alias "RegCloseKeyA" (ByVal hKey As Long) As Long
Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
Public Declare Function RegSetValueNumEx Lib "advapi32" Alias "RegSetValueNumExA" (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
Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As LongPublic Const HKEY_LOCAL_MACHINE = &H80000002
Public Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As LongPublic Const REG_SZ = 1
Public Const REG_BINARY = 3
Public Const REG_DWORD = 4
Public WinSysPath As StringPublic Function GetWinSysPath() As String
    Dim n As Long
    Dim TmpStr As String
    TmpStr = Space(255)
    n = GetSystemDirectory(TmpStr, 255)
    TmpStr = Trim(TmpStr)
    GetWinSysPath = Left(TmpStr, Len(TmpStr) - 1)
End Function建一个类(ACCESS)Public Function Create(ODBCName As String, DatabasePath As String) As Long
    
    Dim regTmp As Long  '新建的注册表值
    Dim n As Long       '对注册表操作返回值
    '获得WINDOWS系统目录
    WinSysPath = GetWinSysPath
    
    Dim DriveStr As String
    DriveStr = WinSysPath & "\odbcjt32.dll"
    
    n = RegCreateKey(HKEY_LOCAL_MACHINE, "Software\ODBC\ODBC.INI\" & ODBCName, regTmp)
    
    n = RegSetValueEx(regTmp, "DBQ", 0, REG_SZ, DatabasePath, Len(DatabasePath))
    n = RegSetValueEx(regTmp, "Driver", 0, REG_SZ, DriveStr, Len(DriveStr))
    n = RegSetValueNumEx(regTmp, "DriverID", 0, REG_DWORD, 25, 4)
    n = RegSetValueEx(regTmp, "FIL", 0, REG_SZ, "MS Access;", 10)
    n = RegSetValueEx(regTmp, "UID", 0, REG_SZ, "", 0)
    
End FunctionPublic Function Delete(ODBCName As String) As Long
    
    On Error GoTo Err_Handle
    Dim regTmp As Long  '新建的注册表值
    Dim n As Long       '对注册表操作返回值
    
    n = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\ODBC\ODBC.INI\", regTmp)
    
    n = RegDeleteKey(regTmp, ODBCName)
    
    Delete = 0
    Exit Function
Err_Handle:
    Delete = -1
End Function
第二个类(SQLSERVER)
Public Function Create(ODBCName As String, Server As String, User As String, Optional Database As String) As Long
    
    On Error GoTo Err_Handle
    Dim regTmp As Long  '新建的注册表值
    Dim n As Long       '对注册表操作返回值
    '获得WINDOWS系统目录
    
    WinSysPath = GetWinSysPath
    Dim DriveStr As String
    DriveStr = WinSysPath & "\SQLSRV32.dll"
    
    n = RegCreateKey(HKEY_LOCAL_MACHINE, "Software\ODBC\ODBC.INI\" & ODBCName, regTmp)
    
    n = RegSetValueEx(regTmp, "Server", 0, REG_SZ, Server, Len(Server))
    n = RegSetValueEx(regTmp, "Driver", 0, REG_SZ, DriveStr, Len(DriveStr))
    n = RegSetValueEx(regTmp, "LastUser", 0, REG_SZ, User, Len(User))
    If Database <> "" Then
        n = RegSetValueEx(regTmp, "Database", 0, REG_SZ, Database, Len(Database))
    End If
    Create = 0
    Exit Function
Err_Handle:
    Create = -1
End FunctionPublic Function Delete(ODBCName As String) As Long
    
    On Error GoTo Err_Handle
    Dim regTmp As Long  '新建的注册表值
    Dim n As Long       '对注册表操作返回值
    
    n = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\ODBC\ODBC.INI\", regTmp)
    
    n = RegDeleteKey(regTmp, ODBCName)
    
    Delete = 0
    Exit Function
Err_Handle:
    Delete = -1
End Function

解决方案 »

  1.   

    打包的时候,要用InstallShield的Script来写,用VB写大概不行
      

  2.   

    问题一、
    我在当地使用一个mysql数据库,是不是只要在MS Access改成mysql
    n = RegSetValueEx(regTmp, "FIL", 0, REG_SZ, "MS Access;", 10)
    问题二、
    新建注册表的值regTmp变量是何意思,我在ODBC里设置的值赋给哪个变量。
      

  3.   

    我使用Set Factory5.0来做的,哪位使用过,在里面能设置这方面的内容不?
      

  4.   

    问题三、
    如果别人机子上没有mysql运行库,我如何把它带过去,并随这个软件一起安装到别人的机子里?
      

  5.   

    自己已解决,谢谢各位!我用setup factory 5.0打包工具就完成我想要的任务了。