pb2X手动添加32位ODBC数据源(必须使用用户DSN)

问题描述:之前没有把事情弄清楚,手动通过odbc32位工具添加系统DSN,查询注册表位置,想通过代码方式进行自动注册,反复测试代码返回1注册成功。但是在注册表指定位置和ODBC图形界面就是查询不到,这是因为64为win系统对注册表HKEY_LOCAL_MACHINE键进行了保护,注册表这种全局位置HKEY_LOCAL_MACHINE无法通过代码自动注册,用RegistrySet函数注册后,win系统会自动将注册位置转移到VirtualStore键值下,所以只能调整方案,注册到用户DSN,这样可以实现代码自动注册odbc数据源.

1.通过ODBC界面填写用户DSN后,在注册表查询pb22_sqlite_gui位置如下

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\pb22_sqlite_gui

HKEY_USERS\S-1-5-21-3557486919-341462320-2402416372-1001\Software\ODBC\ODBC.INI\ODBC Data Sources
HKEY_USERS\S-1-5-21-3557486919-341462320-2402416372-1001\Software\ODBC\ODBC.INI\pb22_sqlite_gui

2.用代码自动注册用户DSN成功

//HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources

integer li_rtn
string ls_reg_key = "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources";

li_rtn = RegistrySet(ls_reg_key, "pb22_sqlite_gui",  RegString!, "SQLite3 ODBC Driver" )

3.走过的弯路 ​​​​​​​ 

通过ODBC界面填写系统DSN后,在注册表查询pb_sqlite_dev位置如下

(无法通过RegistrySet函数自动注册到该位置,因为64位windows有注册表保护机制,会自动注册到**VirtualStore**键值下)

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBC.INI\ODBC Data Sources

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBC.INI\pb_sqlite_dev

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值