我通过RegistrySet注册成功,查找Regist,发现有注册的值。但在控制面板-管理工具-odbc,里面没有看到这一条数据源信息。不知道是否应该出现???
------解决方案--------------------
楼主可以完善以下几个节点
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources
------解决方案--------------------
//以access数据库、注册到系统DSN下为例:
RegistrySet('HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources', 'DSN_Name', RegString!, 'Microsoft Access Driver (*.mdb)')
RegistrySet('HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\DSN_Name', 'Driver',RegString!, 'Microsoft Access Driver (*.mdb)')
RegistrySet('HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\DSN_Name', 'DBQ',RegString!, '数据文件路径')
RegistrySet('HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\DSN_Name', 'Description', RegString!,'数据源描述')
RegistrySet('HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\DSN_Name', 'DriverId', ReguLong!,25)
RegistrySet('HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\DSN_Name', 'FIL',RegString!,'MS Access;')
RegistrySet('HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\DSN_Name', 'SafeTransactions', ReguLong!, 0)
RegistrySet('HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\DSN_Name', 'UID',RegString!, '')
RegistrySet('HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\DSN_Name\Engines', '',RegString!, '')
RegistrySet('HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\DSN_Name\Engines\Jet', 'ImplicitCommitSync', RegString!, 'yes')
RegistrySet('HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\DSN_Name\Engines\Jet', 'MaxBufferSize', ReguLong!, 2048)
RegistrySet('HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\DSN_Name\Engines\Jet', 'PageTimeout', ReguLong!, 5)
RegistrySet('HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\DSN_Name\Engines\Jet', 'Threads', ReguLong!, 3)
RegistrySet('HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\DSN_Name\Engines\Jet', 'UserCommitSync', RegString!, 'Yes')
你可以手工在ODBC数据源管理器手工添加,然后去注册表导出来看生成的详细键值。
如果是64为操作系统,在ODBC数据源管理器里是看不到,因为程序里写到HKEY_LOCAL_MACHINE\SOFTWARE\ODBC,实际注册表对应到 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC,但是不影响正常使用。